2009年11月20日 星期五

衝吧ubuntu


由於現在的CPU都有動態調整CPU頻率的能力,所以,一般都會在比較低的頻率上執行,在ubuntu 9.10上,預設是ondemand,所以平常都是以最低的頻率執行,有需要的時候才會逐漸調高頻率執行,有哪些參數可以下?請參考:
brook@ubuntu:~$ more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
conservative ondemand userspace powersave performance 

您可以在您的/etc/init.d底下發現一個名為ondemand的檔案,將內文中的"ondemand"改為您想要執行的governor即可,我是效能愛好者,所以,我當然是"performance"嚕。如:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          ondemand
# Required-Start:    $remote_fs $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Set the CPU Frequency Scaling governor to "ondemand"
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

case "$1" in
    start)
        start-stop-daemon --start --background --exec /etc/init.d/ondemand -- background
        ;;
    background)
        sleep 60 # probably enough time for desktop login

        for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
        do
                [ -f $CPUFREQ ] || continue
                echo -n performance > $CPUFREQ
        done
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac



2009年11月14日 星期六

coverity初體驗


最近在玩coverity,安裝設定上看看手冊大家應該都不成問題,不過在設定green hill可能會遇到小小的問題,就是coverity用__ghs,而一般的code則使用__ghs__,所以要小改一下。
再來就是幫忙review code的看法,以及新手常犯的錯誤,拿出來一起討論一下吧:

Return Address Of Local Variable

由於local variable的address存在stack之中,當程式結束後stack就會被回收,於是存取這塊記憶體時,就會變成invalid access。
錯誤的Example
#define SIZE    10
char* test()
{
    char s[SIZE];
    strcpy(s, "hello");
    return s;
}
幸運的是,GCC通常會出現"warning: function returns address of local variable"提醒Programmer。
基本上,可以使用malloc或者由外面傳進來:
Example
char* test()
{
    char *s;
    s = (char *) malloc(sizeof(char) * SIZE);
    strcpy(s, "hello");
    return s;
}
或者
char* test(char *s, int len)
{
    strncpy(s, "hello", len);
    return s;
}
個人比較偏愛由外面傳進來,再由外面的函數負責free resource。



真的理解C嗎?


昨天忽然搜尋到真的理解 C 語言的 types 嗎?後,自己在拜讀一下C99的standard,才發現自己真的對C感到很陌生,忽然對文中的"20年的工作經驗不過是一年的經驗,重複了20年"感觸頗深。
就以自己的工作經驗而言,常常發現許多工作好幾年的人與其年資完全不符,似乎是進來的沒多,而抱怨著,寫code不會賺錢,先不論寫code會不會賺錢,其實,自己的年資已經和累積的經驗已經有差距了,如何讓工作不再變成只是重複性的工作,我想這是任何一個programmer應該思考的議題。




熱門文章