tech-sjh

2011年7月27日 星期三

Linux kernel spinlock 使用方式與時機

由 Linus 親自整理的 Linux kernel spinlock 文件

~linux/Documentation/spinlocks.txt
            多核心處理 critical section 的方式,safe but slow(disable interrupts)
 67 See . The basic version is:
 68
 69    spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED;
 70
 71
 72     unsigned long flags;
 73
 74     spin_lock_irqsave(&xxx_lock, flags);
 75     ... critical section here ..
 76     spin_unlock_irqrestore(&xxx_lock, flags);

            單核心處理 critical section 的方式:
115
116     spin_lock_irqsave(flags);
117     .. critical section ..
118     spin_unlock_irqrestore(flags);
119

        reader/writer 處理 shared data 的鎖定方式:
149    rwlock_t xxx_lock = RW_LOCK_UNLOCKED;
150
151
152     unsigned long flags;
153
154     read_lock_irqsave(&xxx_lock, flags);
155     .. critical section that only reads the info ...
156     read_unlock_irqrestore(&xxx_lock, flags);
157
158     write_lock_irqsave(&xxx_lock, flags);
159     .. read and write exclusive access to the info ...
160     write_unlock_irqrestore(&xxx_lock, flags);

        如果確定不會跑在 interrupt handler 中(否則會重複鎖定造成 dead lock),
        可以用簡化的 spin_lock API 較快
192     spin_lock(&lock);
193     ...
194     spin_unlock(&lock);

        因此 read lock 等可以用簡化的非 irq safe spinlock,但 write lock 則必須
        使用 irq safe 的 spin lock

Linux kernel and user space interfaces

1. /dev/  character device ioctl control code read/write interface
2. /sys sysfs  show/store read/write interface
3. /proc procfs  read/write interface
4. event: input events (for example key events)

2011年7月23日 星期六

SCH滿四個月



滿四個月後,口水超多,特愛吸大拇指,會翻半身,奶量約120ml。開始嘗試吃副食品,從貝康純米精開始,一天一餐,但不太捧場,大多吐出來,通常餵個五分鐘就開始不耐煩,只要一哭,我就停止餵食,避免以後抗拒吃副食品。

笑點很低,任何人都可以逗他笑。照鏡子會笑得很開心,躺著看嬰兒床的吊飾玩具也會邊看邊笑,喜歡ㄚㄚ大叫,可以自己玩超過十分鐘,一副自得其樂模樣。

會認媽媽了。尤其想睡覺時,若不是我抱著,會一直哭得很傷心。睡眠已呈穩定狀態,半夜可連續睡6小時,曾經長達過10小時。可見百歲醫生的育兒方法很有效。我照著「百歲醫師教我的育兒寶典」的方法訓練自行入睡,其實就是狠下心來讓他哭到睡著,天天訓練,約2週左右可以一覺到天亮。

健兒門診時,醫生說他腿很有力,很會蹬地板。62cm / 6.8kg 中等身材。很幸運有打到13價肺炎鏈球菌疫苗,之前每次健診都剛好缺貨。到目前為止,發燒過一次,約兩個半月大時,不明原因,也沒就醫,自行服用退燒藥就退燒。4M7D時,被哥哥傳染感冒,有小咳嗽,醫生開「息咳寧感冒糖漿」,這是出生後第一次吃藥。

2011年7月21日 星期四

修改 linux device driver 載入 順序

1.  platform driver 可以調整 platform device 的 register 順序
 
2.  強者同事 Gary 使用 include/linux/init.h 定義不同順序的 init macro
    module_init default 是 order 6
    可以設定 late_initcall 是最後的 order 7

3.  build  kernel module, 在 user space 調整 module loading 順序

2011年7月10日 星期日

蘭德的培養心理調適能力建議

如果喜歡閱讀蘭德公司的文章,可以到蘭德網站購買紙本資料(Consider buying this
document if you think this information is valuable to you.)。

Psychological resilience 原本查到是抗壓力,但我覺得這個翻譯偏負面,不符合這篇的
主旨,因此翻為心理調適能力。

心理調適能力指的是處理或克服逆境與壓力的過程。精神健康方面,心理調適力不只
是個人人格,而是個人跟生命經歷與當下時空環境的互動。比如調適力可以應用到預
防(避免遭遇壓力)或是治療(從壓力產生的傷害中復原)的情境。

可以提升調適力的因素:

個人因素

– 正向處理
經營管理令人煩惱的情況,花費努力解決個人與人際問題,尋求降低或忍受壓力與衝突
,包括主動務實,專注在問題,精神與靈魂層次的處理方式

–正向影響
保持熱情、主動與警覺,包括正向情緒,幽默感(承受壓力、受到挑戰時仍保持幽默感)
,懷抱希望,保持彈性擁抱改變

– 正向思考
處理資訊,應用知識,藉由改造、重構框架、理解情況、保持靈活、再評估、重新聚焦
,改變偏好與價值觀優先順序。對事物結果有正向期待,正面的願景與心理準備

–務實主義
務實掌握可能性,對於結果有務實的預期,自尊心與自我價值,自信心,相信自己能
勝任,認識自己可掌握的部份, 並接受無法控制與無法改變的事物。

– 控制行為
監控、評估、修改情緒反應並完成目標的程序(自我規範、自我管理、自我提升)。

家庭因素
– 情感連結
家人之間的情感連結,包括共享的娛樂與休閒時間。

– 溝通
思考、資訊的交換、 包括解決問題,人際關係的管理。

 – 支持
認知可以從他人得到、並提供安慰。包括情感上的,可觸覺的,起重要作用的與精神、
靈魂上的支持。

– 親密感
愛、親密、忠誠。

 – 教養
養育子女的技巧

– 適應力與通融
可調適自己接受關於生活中的改變,包括彈性、靈活地扮演家庭中的角色。

組織因素

– 正向的領導環境
使用或培養組織單位之間的互動,建立自尊心並支援完成任務、領導統禦、正向角色
典範、執行組織政策

– 團隊合作
協調團隊成員之間靈活彈性的分工合作

– 內聚力
小組能聯合行動,聯結所有團隊成員承諾互相援助,一起投入工作任務。

社群因素
– 歸屬感
整合,友誼,包括參與精神信仰的組織,協定與儀式,社會服務,學校等,以及執行
組織政策。

– 內聚力
社群內可以群聚人們的聯結,包括共享價值與親密安全的關係

– 連結性
在社群中與他人的連繫品質與數量,包括與單位,或與在某單位的人們聯繫,
連繫的層面包括承諾,組織結構,角色,責任與溝通

– 集體效能
團隊成員瞭解整個團隊有能力共同合作

版權宣告、免責聲明


姓名標示、非商業性、相同方式分享3.0台灣授權條款授權。
免責聲明: 本文所載資料僅供參考,並不構成投資建議,
讀者閱讀或使用該資料所導致結果需要自擔風險與責任,
作者概不承擔閱讀人行為之任何風險與責任。
除非有特別宣稱,作者言論並不代表所屬任何團體、公司、或其他人意見。