Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÄÚºË̬ϵÄÎļþ²Ù×÷

ÔÚVFSµÄÖ§³ÖÏ£¬Óû§Ì¬½ø³Ì¶ÁдÈκÎÀàÐ͵ÄÎļþϵͳ¶¼¿ÉÒÔʹÓÃreadºÍwrite×ÅÁ½¸öϵͳµ÷Ó㬵«ÊÇÔÚlinuxÄÚºËÖÐûÓÐÕâÑùµÄϵͳµ÷ÓÃÎÒÃÇÈçºÎ²Ù×÷ÎļþÄØ£¿ÎÒÃÇÖªµÀreadºÍwriteÔÚ½øÈëÄÚºË̬֮ºó£¬Êµ¼ÊÖ´ÐеÄÊÇsys_readºÍsys_write£¬µ«ÊDz鿴ÄÚºËÔ´´úÂ룬·¢ÏÖÕâЩ²Ù×÷ÎļþµÄº¯Êý¶¼Ã»Óе¼³ö(ʹÓÃEXPORT_SYMBOLµ¼³ö)£¬Ò²¾ÍÊÇ˵ÔÚÄÚºËÄ£¿éÖÐÊDz»ÄÜʹÓõģ¬ÄÇÈçºÎÊǺã¿
 
ͨ¹ý²é¿´sys_openµÄÔ´ÂëÎÒÃÇ·¢ÏÖ£¬ÆäÖ÷ҪʹÓÃÁËdo_filp_open()º¯Êý£¬¸Ãº¯ÊýÔÚfs/namei.cÖУ¬¶øÔÚ¸ÄÎļþÖУ¬filp_openº¯ÊýÒ²Êǵ÷ÓÃÁËdo_filp_openº¯Êý£¬²¢ÇÒ½Ó¿ÚºÍsys_openº¯Êý¼«ÎªÏàËÆ£¬µ÷ÓòÎÊýÒ²ºÍsys_openÒ»Ñù£¬²¢ÇÒʹÓÃEXPORT_SYMBOLµ¼³öÁË£¬ËùÒÔÎÒÃDzÂÏë¸Ãº¯Êý¿ÉÒÔ´ò¿ªÎļþ£¬¹¦ÄܺÍopenÒ»Ñù¡£Ê¹ÓÃͬÑùµÄ²éÕÒ·½·¨£¬ÎÒÃÇÕÒ³öÁËÒ»×éÔÚÄÚºËÖвÙ×÷ÎļþµÄº¯Êý£¬ÈçÏ£º
 
¹¦ÄÜ
º¯ÊýÔ­ÐÍ
´ò¿ªÎļþ
struct file *filp_open(const char *filename, int flags, int mode)
¶ÁÈ¡Îļþ
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
дÎļþ
ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)
¹Ø±ÕÎļþ
int filp_close(struct file *filp, fl_owner_t id)
 
ÎÒÃÇ×¢Òâµ½ÔÚvfs_readºÍvfs_writeº¯ÊýÖУ¬Æä²ÎÊýbufÖ¸ÏòµÄÓû§¿Õ¼äµÄÄÚ´æµØÖ·£¬Èç¹ûÎÒÃÇÖ±½ÓʹÓÃÄں˿ռäµÄÖ¸Õ룬Ôò»á·µ»Ø-EFALUT¡£ËùÒÔÎÒÃÇÐèҪʹÓÃ
set_fs()ºÍget_fs()ºêÀ´¸Ä±äÄں˶ÔÄÚ´æµØÖ·¼ì²éµÄ´¦Àí·½Ê½£¬ËùÒÔÔÚÄں˿ռä¶ÔÎļþµÄ¶ÁдÁ÷³ÌΪ£º
mm_segment_t fs = get_fs();
set_fs(KERNEL_FS);
//vfs_write();
vfs_read();
set_fs(fs);
ÏÂÃæÎªÒ»¸öÔÚÄÚºËÖжÔÎļþ²Ù×÷µÄÀý×Ó£º
#include 
#include
#include
#include
static char buf[] = "ÄãºÃ";
static char buf1[10];
 
int __init hello_init(void)
{
    struct file *fp;
    mm_segment_t fs;
    loff_t pos;
    printk("hello enter\n");
    fp = filp_open("/home/niutao/kernel_file", O_RDWR | O_CREAT, 0644);
    if (IS_ERR(fp)) {
        printk("create file error\n");
      &


Ïà¹ØÎĵµ£º

ÔÚlinuxÏÂʵÏÖweb qqµÄ×ÀÃæ»¯


´´½¨×ÀÃæÍ¼±ê
Ŀǰ½«ÍøÂçÓ¦ÓÃÀ©Õ¹µ½×ÀÃæÊÇÒ»¸öÇ÷ÊÆ£¬´æÔÚןܶà½â¾ö·½°¸£¬±¾ÎÄÒÔ Mozilla Prism ΪÀý£¬ÀàËÆµÄ·½·¨Í¬ÑùÊÊÓÃÓÚ Google Chrome ¡£
1. µ½ Mozilla Prism µÄÍøÕ¾ÉÏÏÂÔØ Prism£¬µã»÷ Download Now Ö®ºó»áÌáʾÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÒÔ Mozilla Firefox À©Õ¹µÄ·½Ê½£¬ÊʺÏÒѾ­°²×°ÓÐ Firefox µÄÅóÓÑ£»Ò»Ö ......

linuxÓ²ÅÌ·ÖÇø¼°Îļþϵͳ

  Ó²Å̽ӿÚÊÇÓ²ÅÌÓëÖ÷»úϵͳ¼äµÄÁ¬½Ó²¿¼þ£¬×÷ÓÃÊÇÔÚÓ²ÅÌ»º´æºÍÖ÷»úÄÚ´æÖ®¼ä´«ÊäÊý¾Ý¡£²»Í¬µÄÓ²Å̽ӿھö¶¨×ÅÓ²ÅÌÓë¼ÆËã»úÖ®¼äµÄÁ¬½ÓËÙ¶È£¬ÔÚÕû¸öϵͳÖУ¬Ó²Å̽ӿڵÄÓÅÁÓÖ±½ÓÓ°Ïì×ųÌÐòÔËÐпìÂýºÍϵͳÐÔÄܺûµ¡£´ÓÕûÌåµÄ½Ç¶ÈÉÏ£¬Ó²Å̽ӿڷÖΪIDE¡¢SATA¡¢SCSIºÍ¹âÏËͨµÀËÄÖÖ£¬IDE½Ó¿ÚÓ²Å̶àÓÃÓÚ¼ÒÓòúÆ·ÖУ¬Ò²²¿·ÖÓ¦ÓÃÓÚ· ......

Linux Îļþϵͳ¸ÅÊö

Linux Îļþϵͳ¸ÅÊö
×÷Õߣº±±ÄÏÄϱ±
À´×Ô£ºLinuxSir.Org
ÕªÒª£º ±¾ÎÄͨ¹ýÎļþϵͳµÄ¶¨Òå˵Æð£¬È»ºóͨ¹ýÒýÎļòµ¥µÄ½éÉÜÁËÒ»ÏÂÎļþϵͳÀàÐÍ£»¶ÔLinux³£ÓõÄext2¡¢ext3¼°reiserfs ¸ù¾Ý±¾ÈËʹÓþ­ÑéÒ²·º·ºµÄ̸ÁË̸£¬µ«²¢²»ÊÇרҵµÄ¡£ÈçºÎÔĶÁ±¾ÎÄ£¬»¹ÊÇÓÃÂí¿Ë˼ÀíÂÛ¸æËßÎÒÃǵķ½·¨£ºÒ»·ÖΪ¶þ£¬±ß¿´±ßÅú°É£»Ä¿Â¼Ë÷Òý Ò»¡¢Ê²Ã´ ......

Compile Linux Kernel Modules

ÎÒÕýÔÚѧϰдlinux device driver for embedded system.
ÎÒÓÐÒ»¸ölinuxǶÈëʽÉ豸£¬Ò²ÓÐÕâ¸öÉ豸µÄlinuxÔ´´úÂë¡£Ò²ÓÐcross compiler tool chain.
µÚÒ»²½£¬¾ÍÊÇдһ¸ö¼òµ¥µÄhelloÄ£¿é£¬È»ºó×°µ½É豸ÖС£ÒÔÑéÖ¤ÎÒÕâ¸ö¿ª·¢»·¾³¡£
ÔÚÍøÉÏËÑË÷ÁËһϣ¬ how to cross compile linux device driver
·¢ÏÖÔÚlinux´úÂë¸ùĿ¼µÄMak ......

linux ipÃüÁî

ip ÊǸöÃüÁ ip ÃüÁîµÄ¹¦Äܺܶ࣡»ù±¾ÉÏËüÕûºÏÁË ifconfig Óë route ÕâÁ½¸öÃüÁ²»¹ýip µÄ¹¦ÄܸüÇ¿´ó£¡ Èç¹ûÄúÓÐÐËȤµÄ»°£¬Çë×ÔÐÐ vi /sbin/ifup ¾ÍÖªµÀÕû¸ö ifup ¾ÍÊÇÀûÓà ip Õâ¸öÃüÁîÀ´ÊµÏֵġ£ÏÂÃæ½éÉÜÒ»ÏÂʹÓ÷½·¨
[root@linux ~]# ip [option] [¶¯×÷] [ÃüÁî]
²ÎÊý£º
option £ºÉ趨µÄ²ÎÊý£¬Ö÷ÒªÓУº
   ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ