linuxÏÂÇý¶¯µÄÈë¿Úº¯Êý¼°¼ÓÔØ
¼¸ºõÿ¸ölinuxÇý¶¯¶¼Óиömodule_init¡£Ã»´í£¬Çý¶¯µÄ¼ÓÔØ¾Í¿¿Ëü¡£ÏÈÀ´·ÖÎöÒ»ÏÂmodule_init¡£¶¨ÒåÈçÏ£º
#define module_init(x) __initcall(x); //include\linux\init.h
#define __initcall(fn) device_initcall(fn)
#define device_initcall(fn) __define_initcall("6",fn,6)
#define __define_initcall(level,fn,id) \
static initcall_t __initcall_##fn##id __used \
__attribute__((__section__(".initcall" level ".init"))) = fn
Èç¹ûijÇý¶¯ÏëÒÔfunc×÷Ϊ¸ÃÇý¶¯µÄÈë¿Ú£¬Ôò¿ÉÒÔÈçÏÂÉùÃ÷£ºmodule_init(func);±»ÉÏÃæµÄºê´¦Àí¹ýºó£¬±ä³É__initcall_func6 __used¼ÓÈëµ½ÄÚºËÓ³ÏñµÄ".initcall"Çø¡£Äں˵ļÓÔØµÄʱºò£¬»áËÑË÷".initcall"ÖеÄËùÓÐÌõÄ¿£¬²¢°´ÓÅÏȼ¶¼ÓÔØËüÃÇ£¬ÆÕͨÇý¶¯³ÌÐòµÄÓÅÏȼ¶ÊÇ6¡£ÆäËüÄ£¿éÓÅÏȼ¶ÁгöÈçÏ£ºÖµÔ½Ð¡£¬Ô½ÏȼÓÔØ¡£
#define pure_initcall(fn) __define_initcall("0",fn,0)
#define core_initcall(fn) __define_initcall("1",fn,1)
#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)
#define postcore_initcall(fn) __define_initcall("2",fn,2)
#define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s)
#define arch_initcall(fn) __define_initcall("3",fn,3)
#define arch_initcall_sync(fn) __define_initcall("3s",fn,3s)
#define subsys_initcall(fn) __define_initcall("4",fn,4)
Ïà¹ØÎĵµ£º
1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......
wcÃüÁî
¡¡¡¡wcÃüÁîµÄ¹¦ÄÜΪͳ¼ÆÖ¸¶¨ÎļþÖеÄ×Ö½ÚÊý¡¢×ÖÊý¡¢ÐÐÊý, ²¢½«Í³¼Æ½á¹ûÏÔʾÊä³ö¡£
¡¡¡¡Óï·¨£ºwc [Ñ¡Ïî] Îļþ…
¡¡¡¡ËµÃ÷£º¸ÃÃüÁîͳ¼Æ¸ø¶¨ÎļþÖеÄ×Ö½ÚÊý¡¢×ÖÊý¡¢ÐÐÊý¡£Èç¹ûûÓиø³öÎļþÃû£¬
Ôò´Ó±ê×¼ÊäÈë¶ÁÈ¡¡£wcͬʱҲ¸ø³öËùÓÐÖ¸¶¨ÎļþµÄ×Üͳ¼ÆÊý¡£×ÖÊÇÓɿոñ×Ö·ûÇø·Ö¿ªµÄ×î´ó×Ö·û´®¡£
¡¡¡¡¸ÃÃüÁî¸÷Ñ¡Ïî ......
Ò»Ö±ÔÚ¹Ø×¢´óÐÍÎļþ´æ´¢ÏµÍ³µÄ×îнü¿ö£¬½üÈÕÓÖµÃÖªÒ»¸öÖØ°õÏûÏ¢£ºLinux kernel ×Ô 2.6.28 ¿ªÊ¼Õýʽ֧³ÖеÄÎļþϵͳ Ext4¡£ÕæÊÇÆÚ´ýÒѾÃÁ˰¡~Ext4 ÊÇ Ext3 µÄ¸Ä½ø°æ£¬ÐÞ¸ÄÁË Ext3 Öв¿·ÖÖØÒªµÄÊý¾Ý½á¹¹£¬¶ø²»½ö½öÏñ Ext3 ¶Ô Ext2 ÄÇÑù£¬Ö»ÊÇÔö¼ÓÁËÒ»¸öÈÕÖ¾¹¦ÄܶøÒÑ¡£Ext4 ¿ÉÒÔÌṩ¸ü¼ÑµÄÐÔÄܺͿɿ¿ÐÔ£¬»¹ÓиüΪ·á¸»µÄ¹¦ÄÜ£ ......
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
pid_t pid;
static int n = 0;
printf("fork!\n"); /*printf("fork!")*/
switch (pid = fork())
{
&nbs ......
1. man ¶ÔÄãÊìϤ»ò²»ÊìϤµÄÃüÁîÌṩ°ïÖú½âÊÍ eg:man ls ¾Í¿ÉÒԲ鿴lsÏà¹ØµÄÓ÷¨ ×¢£º°´q¼ü»òÕßctrl+cÍ˳ö£¬ÔÚlinuxÏ¿ÉÒÔʹÓÃctrl+cÖÕÖ¹µ±Ç°³ÌÐòÔËÐС£ 2. ls ²é¿´Ä¿Â¼»òÕßÎļþµÄÊô*£¬ÁоٳöÈÎһĿ¼ÏÂÃæµÄÎļþ eg: ls /usr/man ls -l a.d±íʾĿ¼(directory)£¬Èç¹ûÊÇÒ»¸ö"-"±íʾÊÇÎļþ£¬Èç¹ûÊÇlÔò±íʾ ......