»ñÈ¡linuxµÄÎļþϵͳÏà¹ØÐÅÏ¢µÄ֪ʶµã
ÔÚ struct mntent ÖеijÉÔ±Óë /etc/fstab ÎļþÖеÄÌõÄ¿ÊÇÖ±½Ó¶ÔÓ¦µÄ¡£ËüµÄÄÚÈÝÈçÏ£º
struct mntent {
char *mnt_fsname; /* ¹ÒÔØµÄÎļþϵͳµÄÃû×Ö */
char *mnt_dir; /* ¹ÒÔØµã */
char *mnt_type; /* ÎļþϵͳÀàÐÍ£ºufs¡¢nfs µÈ */
char *mnt_opts; /* Ñ¡ÏÒÔ¶ººÅΪ·Ö¸ô·û */
int mnt_freq; /* Dump µÄƵÂÊ(ÒÔÌìΪµ¥Î») */
int mnt_passno; /* fsck¼ì²éµÄ´ÎÐò */
};
FILE *setmntent(const char *filename, const char *type);
struct mntent *getmntent(FILE *filep);
int addmntent(FILE *filep, const struct mntent *mnt);
int endmntent(FILE *filep);
char *hasmntopt(const struct mntent *mnt, const char *opt);
setmntent() ÊÇ´ò¿ª°üº¬¹ÒÔØµãÏîÄ¿µÄÎļþ, ÆäÖÐµÄ filename ²ÎÊýÊÇÒª´ò¿ªµÄÎļþÃû, type ²ÎÊý¾ÍÏñ fopen() µÄµÚ¶þ¸ö²ÎÊý, ´ú±íÖ»¶Á¡¢Ö»Ð´, »ò¶Áд½Ô¿ÉµÄ´æÈ¡Ä£Ê½ ¡£·µ»ØFILE*¡£
getmntent() ÔòÊÇÑÐò¶ÁÈ¡Õû¸öµµ°¸£¬´«»ØÖ¸Ïò static struct mntent ½á¹¹µÄÖ¸Õ룬½á¹¹ÖлáÌîÈëÊʵ±µÄÖµ¡£
addmntent() ¿ÉÒÔÔÚÒÑ¿ªÆôµµ°¸µÄÄ©¶Ë¼ÓÉÏ×ÊѶ£¬ËüÔ±¾ÊǸø mount ʹÓõġ£
endmntent() µÄ¹¦ÓÃÊǹرմò¿ªµÄÎļþ¡£Õâ²»ÄÜÖ»ÊǺô½Ð fclose() ¶øÒÑ,ÒòΪ¿ÉÄÜ»¹ÓÐÆäËüÓëFILE * ÓйصÄÄÚ²¿×ÊÁϽṹÐèÒªÇåÀí¡£
hasmntopt() ÊǸö±È½ÏÌØÊâµÄº¯Ê½¡£Ëü»áɨÃèµÚÒ»¸ö²ÎÊýËù´«ÈëµÄstruct mntent£¬ÕÒ³öËüµÄ¹ÒÔØÑ¡ÏîÊÇ·ñ·ûºÏµÚ¶þ¸öÒýÊý¡£¼ÙÈçÕÒµ½Ñ¡Ïî¾Í´«»Ø·ûºÏµÄ×Ó×Ö·û´®µÄλַ£»·ñÔò´«»ØNULL¡£
/etc/fstab¡¢/etc/mtab ºÍ /proc/mounts ÆäÖÐÈκÎÒ»¸ö, ¶¼¿ÉÒÔÔÚ³ÌÐòÖÐʹÓà getmntent() Õâ×麯ÊýÀ´¶ÁÈ¡
eg£º
#include <mntent.h>
struct mntent* mnt;
FILE* fp;
fp = setmntent("/dev/mmc/mmcblk0", "r");
if ( !fp )
{
return FALSE;
}
if(mnt=getmntent(fp) )
{
#if 1
printf("woosoori[%s:%d] mnt->mnt_fsname=%s\n",__FUNCTION__,__LINE__, mnt->mnt_fsname);
printf("woosoori[%s:%d] mnt
Ïà¹ØÎĵµ£º
ÓÅÏÈȨֻÊǵ÷¶ÈËã·¨¿¼ÂǵÄÒ»¸ö·½Ãæ
½ø³Ìµ÷¶ÈÒÀ¾Ý
µ÷¶È³ÌÐòÔËÐÐʱ£¬ÒªÔÚËùÓпÉÔËÐÐ״̬µÄ½ø³ÌÖÐÑ¡Ôñ×îÖµµÃÔËÐеĽø³ÌͶÈëÔËÐС£Ñ¡Ôñ½ø³ÌµÄÒÀ¾ÝÊÇÊ²Ã´ÄØ£¿ÔÚÿ¸ö½ø³ÌµÄtask_struct½á¹¹ÖÐÓÐÒÔÏÂËÄÏpolicy¡¢priority¡¢counter¡¢rt_priority¡£ÕâËÄÏîÊÇÑ¡Ôñ½ø³ÌµÄÒÀ¾Ý¡£ÆäÖУ¬policyÊǽø³ÌµÄµ÷¶È²ßÂÔ£¬ÓÃÀ´Çø·Öʵʱ½ø³ÌºÍÆ ......
ÔÚlinux»·¾³Ï±à³ÌÓÐÒ»¸öºÜÈÃÈËÍ·ÌÛµÄÎÊÌâ¾ÍÊÇÐźŶÔϵͳµ÷ÓõĸÉÈÅ£¬ÔÚϵͳµ÷Óùý³ÌÖÐÈç¹ûÊܵ½ÐźŵĸÉÈÅ£¬
²¿·Öϵͳµ÷ÓûὫerrnoÉèÖóÉEINTR£¬ÎÒÃDz»µÃ²»±àдÏÂÃæµÄ´íÎó´¦Àí´úÂëÀ´·ÀÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£º
syscall:
int ret = syscall(...);
if (ret < 0 && EINTER == errno)
goto syscall;
el ......
×ölinux cÓïÑÔ¿ª·¢ÓÐһСÕó×ÓÁË£¬ÔÚÕâ±ß×Ô¼º×ܽáÁËЩÐĵã¬ÏàÐÅÄÜÈò»¶®µÃLinux±à³ÌµÄÈËÂýÂý²½ÈëLinuxµîÌá£ÓÐÈκβ»¶Ô»ò²»×¼È·Ö®´¦»¶ÓÌÖÂÛ¡£
1. °²×° linux ²Ù×÷ϵͳ
¼ÈȻҪѧϰlinuxϵÄcÓïÑÔ¿ª·¢£¬ÄÇô°²×°¸ölinux²Ù×÷ϵͳÊDZØÐëµÄ¡£½¨Òé°²×°Ubuntu£¬ÕâÊÇÎÒĿǰ¼û¹ý½çÃæ×îÓѺõÄlinux²Ù×÷ϵͳÁË¡£¹ØÓÚÈçºÎʹÓÃUbuntuÒ ......
ÏȽéÉܼ¸¸ö»ù±¾¸ÅÄ
ºǫ́½ø³Ì£ºÔÚºǫ́ÔËÐеÄÎÞÐëÓëÓû§½»»¥µÄ³ÌÐò¡£ÔÚ¶àÈÎÎñ²Ù×÷ϵͳÉÏÔËÐжà¸öºǫ́½ø³Ì£¬ÓÐЩºǫ́½ø³Ì£¨ÀýÈçÊØ»¤³ÌÐò£©´ÓÀ´¶¼²»ÐèÒªÓû§ÊäÈ룬ÆäËüһЩ½ø³ÌÖ»ÊÇÔÚÓû§Ã¦ÓÚĿǰÔËÐÐÓÚǰ̨µÄ³ÌÐòʱ²ÅÁÙʱ´¦ÓÚºǫ́¡£
ÊØ»¤½ø³ÌÊÇÒ»ÖÖºǫ́½ø³Ì¡£crond½ø³ÌÊÇÖÚ¶àÊØ»¤½ø³ÌÖеÄÒ»ÖÖ£¬¿´¿´cronÕâ¸öµ¥´ÊÔÚ×ÖµäÀïà ......
#insmod ./driver_xx.ko
´Ëʱ#cat /proc/devices ÄÜ¿´µ½ driver_xx É豸
#mknod /dev/mygpio c 230 0 (230ÊÇÖ÷É豸ºÅ£¬0ÊÇ×ÓÉ豸ºÅ£©
{ÕâÀï¿ÉÒÔÐÞ¸ÄÉ豸Ãû³Æ,µ«ÊÇÒªºÍ²âÊÔ³ÌÐòÖÐÒ»Ö fd_pio = open(“/dev/mygpio”, O_RDWR);
×îºÃºÍregister_chrdev(MY_PIO_MAJOR, "mygpio", &my_pio_fops)ÖеÄÒ»ÖÂ}
ʹ ......