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");
&
Ïà¹ØÎĵµ£º
fg¡¢bg¡¢jobs¡¢&¡¢ctrl + z¶¼ÊǸúϵͳÈÎÎñÓйصģ¬ËäÈ»ÏÖÔÚ»ù±¾Éϲ»ÔõôÐèÒªÓõ½ÕâЩÃüÁµ«Ñ§»áÁËÒ²ÊǺÜʵÓõÄ
Ò»¡£& ×î¾³£±»Óõ½
Õâ¸öÓÃÔÚÒ»¸öÃüÁîµÄ×îºó£¬¿ÉÒÔ°ÑÕâ¸öÃüÁî·Åµ½ºǫִ́ÐÐ
¶þ¡£ctrl + z
¿ÉÒÔ½«Ò»¸öÕýÔÚǰִ̨ÐеÄÃüÁî·Åµ½ºǫ́£¬²¢ÇÒÔÝÍ£
Èý¡£jobs
²é¿´µ±Ç°ÓжàÉÙÔÚºǫ́ÔËÐеÄÃüÁî
ËÄ¡£fg
½ ......
Linux Îļþϵͳ¸ÅÊö
×÷Õߣº±±ÄÏÄϱ±
À´×Ô£ºLinuxSir.Org
ÕªÒª£º ±¾ÎÄͨ¹ýÎļþϵͳµÄ¶¨Òå˵Æð£¬È»ºóͨ¹ýÒýÎļòµ¥µÄ½éÉÜÁËÒ»ÏÂÎļþϵͳÀàÐÍ£»¶ÔLinux³£ÓõÄext2¡¢ext3¼°reiserfs ¸ù¾Ý±¾ÈËʹÓþÑéÒ²·º·ºµÄ̸ÁË̸£¬µ«²¢²»ÊÇרҵµÄ¡£ÈçºÎÔĶÁ±¾ÎÄ£¬»¹ÊÇÓÃÂí¿Ë˼ÀíÂÛ¸æËßÎÒÃǵķ½·¨£ºÒ»·ÖΪ¶þ£¬±ß¿´±ßÅú°É£»Ä¿Â¼Ë÷Òý Ò»¡¢Ê²Ã´ ......
brctl addbr br0
ifconfig br0
br0 MAC is 00:00:00:00:00:00
brctl addif br0 eth1 (eth1 is xx:xx:xx:xx:xx:33)
ifconfig br0
br0 MAC is xx:xx:xx:xx:xx:33 same as eth1, auto change
brctl addif br0 eth2 (eth2 is xx:xx:xx:xx:xx:30)
ifconfig br0
br0 MAC is xx:xx:xx:xx:xx:30 sa ......
ÔÚlinuxÏÂopengl±à³Ì£¬Ê×ÏÈÐèÒª°²×°glut°ü¡£
1 °²×°glut
£¨1£©ÏÂÔØµØÖ·£º
http://fidelio.cacs.louisiana.edu/resources/linux/glut.zip
£¨2£©½«glut.zip½âѹ£º
unzip glut.zip
½âѹºó£¬ÀïÃæÓÐÒ»¸örpm°²×°°ü£¬Ò»¸ö²âÊÔÎļþ£¬Ò»¸öglut.h,Ò»¸ömakefile, Õ⼸¸öÎļþ¶¼·Ç³£ÖØÒª¡£
£¨3£©°²×°£º
rpm -i glut-3.7-8.i386. ......