硬體:訊為4412核心板,
os:訊為linux3.0.15
編譯環境:ubuntu1404
編譯器:訊為提供的arm-2009q3-gcc交叉編譯。
參考一文。
增加加減乘除等系統呼叫,並測試系統呼叫和使用者呼叫的效能差異。
1、新增系統呼叫函式
在/kernel/sys.c內新增
/**
* sys_add - self-define add
* @ x, y
* this is a user-added test
*/asmlinkage int sys_add(int x, int y)
2、系統呼叫表內增加條目
/arch/arm/kernel/calls.s內新增
call(sys_add)
並且記錄下呼叫號376
3、編譯核心
4、測試
#include
#include
#include
#define __nr_add 376
#define __nr_xor 377
int main()
在板子上顯示
16+24=40 16^24=8
5、效能測試
編寫usrtest.c
#include
#include
int add(int a, int b)
int main()
return
0;}
與systest.c
#include
#include
#include
#define __nr_add 376
#define __nr_xor 377
int main()
return
0;}
結果是預料當中的啦:
[root@itop-4412]# time systestreal 0m 16.49s
user 0m 5.40s
sys 0m 11.08s
[root@itop-4412]# time usrtest
real 0m 2.34s
user 0m 2.33s
sys 0m 0.01s
ARM Linux下新增自定義系統呼叫
本文基於公司 uclinux 核心,詳細講述 3代終端 gpioctrl 的原理及應用。arm linux 的系統中斷採用產生軟中斷,查詢系統呼叫表,呼叫系統呼叫函式的方式實現系統呼叫。先講述,如何去查詢 gpioctrl 函式的實現。1.通過查詢,找到函式定義。在sg2klib.c 裡,有如下定義...
C 自定義分頁控制項3 0
c 自定義分頁控制項3.0 最近做的乙個專案,又用上了自己寫的自定義分頁控制項,發現不夠完善,使用起來不是很方便,於是進行了公升級,這已經是第二次公升級了,公升級估計還會繼續,為什麼是估計呢?1 不知道有沒有朋友用,也沒有人提出要我改進 2 我想做c 啊 如果有機會的話,就開始寫c 了,c 將會寫得...
AS3 0建立自定義元件
介紹使用as 3.0來建立自定義元件 每個flex 元件都是乙個as 類,不管它是否是乙個ui控制器,乙個容器或者一些其它型別的元件。在mxml中能建立的都能在as中建立。有一些可以用as做到,但是mxml做不到的。建立乙個as元件的步驟和你建立任何的as類的步驟非常類似。首先,決定你的新類要擴充套...