瀏覽模式: 普通 | 列表
11
13

Regular expression-跟brainfuck差不多的東西

最近好像有點流行短碼或符號語言之類的程式寫法,市面上也出了幾本書,brainfuck也是符號語言的代表之一,看完wiki上的brainfuck程式,我真他x的想吐血,我不曉得工作上交接這種東西會有誰願意,小弟最近也是陷入類似brain fuck的regular expression地獄,regular expression又臭又長就算了,連GNU的regex library也這麼的不堪用,一些簡單的case也無法處理

[閱讀全文]

標籤: linux
10
13

Reading file in kernel-簡單但實用

在embedded的設備上,driver需要讀取某些設定檔並根據設定值設定硬體,除了ioctl, file read/write之外,最簡單的方式莫過於直接在kernel space進行設定檔的讀寫,不過通常”寫入”這個功能很少用到,所以我略過這個東西不提

[閱讀全文]

標籤: linux
08
19

Linux file system for dummies-只花你45分鐘

小弟其實一直很想跟大家介紹這篇文章"Linux File Systems in 45 minutes”,原文出處是在2006的Linux symposium的open conference,由NFS和Samba的作者Steve French執筆,而其主要的內容是把linux VFS和file system之間的函式呼叫和使用到的資料結構做一個簡單的介紹

[閱讀全文]

標籤: linux
07
16

OPENSSL-TCP SSL初心者之路

最近因為工作的關係,碰到一些加解密的問題,所以藉由這個機會,好好的回頭看了openssl這個只有編過但完全沒用過的library,還好有網友把整個openssl剖析的很透徹,在學習的過程中幾乎沒碰到太多的問題,因為openssl每組API的使用方式實在太固定了,所以md5 api試過後,後面的數位簽章和RSA都不會太困難,而在openssl裡,SSL framework是我覺得包裝相當漂亮的函式,所以下面的內容都著重在TCP SSL的使用介紹

使用http ssl基本上有幾個流程
1. Initial socket
2. Connect socket
3. Initial SSL
    <1>SSL_library_init:initial SSL library
    <2>SSL_CTX_new:create a new SSL_CTX object to enable SSL connection
    <3>SSL_new: create SSL data stucture
    <4>SSL_set_fd:bind ssl and socket fd
    <5>SSL_connect:connect to server
4. ssl_read or ssl_write: read ssl information

[閱讀全文]

標籤: linux
04
29

NAPI與pure interrupt driver的效能比較

下星期就要出差去美國了,擔心的反而不是豬流感,而是未來一星期的IOT會不會出問題,雖然測試好幾遍了,但工作那麼多年,根據經驗,只要是正式的測試場合,平常不會出trouble的地方全部都會在那時出現,不過這種東西是危機也是轉機,看個人造化

NAPI的相關資料可查尋此網站,它推出的目的就是為了在interrupt和polling之間取得一個效能平衡,interrupt的缺點就是當封包數目多且中斷頻繁發生時,可能會有upper layer skb queue starvation的情況,嚴重者會造成其它的driver無法取得中斷資源,而polling會耗費大量的cpu time,為了終結以上兩個情況,在2.6的kernel已經把NAPI的相關函式提供給driver programmer,NAPI會在中斷時提供一polling函式把drvier queue裡面的skb一口氣讀出(假設weight為64,就是一次讀取64個skb),這樣不但減輕interrupt對系統造成的負擔,也間接解決drvier資源相競的問題

[閱讀全文]

標籤: linux
04
21

usermode helper-來自kernel的呼喚

博客來最近都在促銷Orielly的書,只要買足3本,就可享75折的優惠,所以我這次一口氣買了三本雖然之前看過但很想收藏的書,自從出社會後,幾乎每個月都會買個幾本技術相關的書籍典藏,雖然網路上都抓得到,但總覺的缺了一份質感,沒有翻書的感覺,就好像沒在看書

這次要介紹東西很簡單,但這種技巧很常見,不論是hotplug會是kernel init,都會發現這個函式的蹤影,當安裝plug&play裝置時,kernel會呼叫hotplug執行device setup script,而從kernel呼叫user space的API,就是user modehelper,簡單的程式我列如下

程式的重點在於envp和argv的設定,envp是環境設定的變數,而argv是user application的執行參數

[閱讀全文]

標籤: linux
03
31

kernel module memory detector-抓出有害的kernel module

之前的文章有提到想用kallsyms_lookup做出kernel module memory detector,剛好今天有空抽點時間做出來,不過在實做的過程中發現,要改動的地方還真多阿,在hack的過程中,絕大部份都是苦工,剪剪貼貼一大堆,不過講到這邊,我突然想到我去年有一次寫程式寫到睡著,因為從頭到尾都剪貼,又一堆fopen, fread,fclose,說老實話,這種程式寫久了會頭暈想吐…

[閱讀全文]

標籤: linux
03
26

kernel space coding-如履薄冰

有碰過kernel code的人大概多少都瞭解我標題的意思,kernel code很迷人,但很危險,稍不小心,就會被kernel panic拖進地獄

拿我最近review的code當例子,截取某一段code如下,這是一段相當簡單的kernel threading code,當kernel module被insert時,會開啟kernel thread執行thread_main這個function,當remove module時,會呼叫delete_thread把kernel thread砍掉,可以仔細看看thread_kill這段function,有沒有什麼問題

[閱讀全文]

標籤: linux