目前日期文章:201105 (6)

瀏覽方式: 標題列表 簡短摘要

udelay & mdelay

driver常常會需要很短且精準的delay(n microsecond/millisecond),以完成sync。此時用jiffies就不恰當,第一單位不夠小,如果timer是100Hz,表示一個tick是10 millisecond。第二不夠準,因為透過scheduler。在kernel裡有兩個function來完成很小的delay,不使用jiffies:

在<linux/delay.h>

void udelay(unsigned long usecs)
void mdelay(unsigned long msecs)

兩個都是busy waiting。udelay的實作要先談BogoMIPS,這個值是指在特定時間內CPU可執行多少個busy loop operation。也就是說,這個CPU不做任何事可以多快 (how fast a processor can do nothing)。這個值在kernel裡是一個叫做loops_per_jiffy的變數,在userspace則可在/proc/cpuinfo裡找到。而kernel是在init/main.c裡透過calibrate_delay()這個function來計算。值得一提的是這個值是跟performance沒太大關係的。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

原文: Sleeping in the Kernel

在多處理器(SMP)和hyperthreading的時代,sleep_on()這個function已經無法保證其可靠性了。以下為讓一個process安全以及跨平台的sleep方式。

Linux kernel有好些時候一個process會需要wait,直到某些事情發生,或是process需要醒來做一些事情。

使用schedule()

ready-to-run的process是放在run queue裡,其state是TASK_RUNNING。當一個process的timeslice結束,scheduler就從這個queue裡挑另一個process,並把CPU allocate給他。這是用完CPU的case。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

Super I/O早期是一張卡,後來變成一顆在主機版上的IC,已經很普遍了。接在Super I/O上的device通常是low-bandwidth,包括floopy disk controller, parallel port, serial port, keyboard mouse和sensor。在bring up板子時,Super I/O可能會是最早要被support的,因為debug message是從com port吐出來。

下面的圖是從Wiki貼過來的,參考一下架構圖。

superio  

 

而super IO的programming,是對CR07這個register操作,寫到其config address。然後再指定logic device的offset到其data address。更詳細的步驟要看datasheet了。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

IPMI driver

ipmi_msghandler: IPMI的核心,負責處理所有的message,IPMI user及IPMI的physical interface (SMI, System Management Interface)都綁在msghandler上。但只提供kernelland的interface,userland則需另一個下一個driver (devintf)。

ipmi_devintf: userland的 IOCTL。

ipmi_si: 不同system interface (如SMIC, BT, SSIF和KCS)的driver。下面的範例即需要這個。

ipmi_watchdog: 一個watchdog timer來監控系統

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

前言

Server的設計顯然不同於一般PC,穩定,能夠自我管理,自我修復, 能夠不中斷的提供服務,應該會是台好server。從簡單的溫度監控,到系統及每個component的狀態的偵測與修復,軟硬體的錯誤,每家廠商就開始設計其proprietart的interface來完成這些事。而不同的設備與不同的應用卻使得系統難以管理,效率也不好。。因此Intel就跳出來倡導IPMI (Intelligent Platform Management Interface)來標準化這些interface,並解決server自我管理能力低的問題。管理的方式為透過 BMC (Baseboard Management Controller)這個processor,與CPU及主板上的元件相連,進而監控其狀態,包含溫度,電壓,風扇等元件,當系統出問題時予以重啟,或是當機時重開機,甚至在系統關機下也可遠端啟動。由此可看出BMC是獨立於原來的主系統之外,獨立運作,而與CPU,OS是無關的。

2001年發佈的IPMI 1.0,是透過serial port來完成這樣的管控。1.5版及2.0版更加強了其監控功能,以及遠端控制。

IPMI的優點整理如下:

1. 獨立於主系統,可提供out of band 的管理,適合重啟系統。並且是跨平台的。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

802.1x是一個IEEE的標準--port-based的network acces control,提供一種讓device attach到LAN/WLAN的認證機制這個機制於下方的EAPOL中說明。

802.1x定義了EAP (Extensible Authentication Protocol) over LAN 的封裝方式,也稱為EAPOL。EAPOL原本是給802.3 Ethernet用的,但後來也可適合於802網路,如802.11/FDDI。

PPP

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()