Linux內核版本:2.6.14在linux內核中我們都會經常見到FASTCALL和armlinkage,它們各有什麼不同呢?下面我們來具體分析一下。在標准C系中函數的形參在實際傳入參數的時候會涉及到參數存放的問題,那麼這些參數存放在哪裡呢?對x86
Linux內核版本:2.6.14dup系統調用的服務例程為sys_dup函數,定義在fs/fcntl.c中。sys_dup()的代碼也許稱得上是最簡單的之一了,但是就是這麼一個簡單的系統調用,卻成就了linux系統最著名的一個特性:輸入/輸出重定向。
Linux內核版本:2.6.14今天分析內核時又看到了typeof,只知道它大概是返回變量的類型,後來上網查了下發現這個關鍵字在linux中用的非常多。如果你對sizeof很熟悉的話,那麼大可進行類推,sizeof(exp)返回的是exp的數據類型大
在看Linux內核源碼的時候,經常會遇到IS_ERR,比如在 linux/arch/arm/kernel/sys_arm.c中asmlinkage int sys_execve(char __user *filenamei, char __user
Linux內核版本:2.6.14CPU平台:arm在內核空間和用戶空間交換數據時,get_user和put_user是兩個兩用的函數。相對於copy_to_user和copy_from_user(將在另一篇文中分析),這兩個函數主要用於完成一些簡單類
Kernel version:2.6.14CPU architecture:ARM920T1.copy_from_user在學習Linux內核驅動的時候,經常會碰到copy_from_user和copy_to_user這兩個函數,設備驅動程序中的io
Kernel version:2.6.14CPU architecture:ARM920T作為文件的使用者,進程理所當然的要將所使用的文件記錄於自己的控制塊中,也就是task_struct。另外,由於進程所對應的程序也是一個文件,因此進程控制塊還必須
Kernel version:2.6.14CPU architecture:ARM920Tsocket和文件系統緊密相關,我們可以通過文件系統的open、read、write和close等操作socket。下面是一個簡單的例子。/**********
Kernel version:2.6.14CPU architecture:ARM920T1.close函數上圖說明了close(fd)的執行過程,主要包括兩部分:釋放文件描述符fd,關閉文件file。//fs/open.casmlinkage lo
Kernel version:2.6.14CPU architecture:ARM920T在linux內核中主要有兩個函數涉及到文件描述符的分配:get_unused_fd和locate_fd。本文主要講解get_unused_fd,將會在下一篇文章
Kernel version:2.6.14CPU architecture:ARM920T繼續上一篇文章的內容,分析另一個文件描述符fd的分配函數locate_fd。dup系統調用用於復制一個文件描述符對應的文件,返回值是個文件描述符。在前面的文章中
Kernel version:2.6.14CPU architecture:ARM920T我們先貼出expand_files函數的源碼:int expand_files(struct files_struct *files, int nr){&nbs
Kernel version:2.6.14CPU architecture:ARM920TGCC version:arm-linux-gcc-3.4.1看內核時經常遇到if(likely( )){}或是if(unlikely( ))這樣的語句,不甚了
一.下載linux內核源碼我使用的是linux-loongson-release-zb-kernel.tgz將其解壓到/usr/src目錄下: tar -xzvf linux-loongson-release-zb-kernel.tgz這樣在此目錄下
前言:1.基本概念:散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表
前言:在Linux內核中使用了大量的鏈表來組織其數據,其采用了雙向鏈表作為其基本的數據結構。但是與我們傳統的數據結構中所學的雙向鏈表又有著本質的一些不同(其不包含數據域)。其主要是Linux內核鏈表在設計時給出了一種抽象的定義。采用這種定義有以下兩種
1.container_of宏1> Container_of在Linux內核中是一個常用的宏,用於從包含在某個結構中的指針獲得結構本身的指針,通俗地講就是通過結構體變量中某個成員的首地址進而獲得整個結構體變量的首地址。2>接口:conta
1.offset宏講解#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)對這個宏的講解我們大致可以分為以下4步進行講解:1>( (TYPE *)0 )&nbs
前段時間為了解決內核模塊無法卸載的問題,對模塊的加載過程詳細地學習了一番。加載模塊時常用的命令是insmod和modprobe,這兩個命令主要是通過系統調用sys_init_module()來完成主要的工作,用戶層做的更多的是對參數的處理,以及將插入