Linux TTY Çý¶¯
Ïà¹ØÁ´½Ó£º
http://blog.csdn.net/dongliqiang2006/archive/2009/09/05/4523563.aspx
×Ö·ûÉ豸
1£¬×Ö·ûÉ豸²ã
ÔÚLinuxÖÐÊÇ×÷Ϊһ¸öÎļþÀ´³öÏֵģ¬ËùÓжÔ×Ö·ûÉ豸µÄ²Ù×÷¶¼ÊÇͨ¹ýfile_operations½Ó¿ÚÀ´½øÐеģº
struct cdev {
struct kobject kobj;
struct module *owner;
const struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
void cdev_init(struct cdev *, const struct file_operations *);
Õâ¸öº¯Êý³õʼ»¯Ö¸¶¨µÄcdev½á¹¹£ºÆäÖÐ×îÖØÒªµÄ²½Öè¾ÍÊÇÉèÖÃops
static struct kobj_map *cdev_map;
int cdev_add(struct cdev *, dev_t, unsigned);
cdev_mapÓ¦¸ÃÊÇËùÓÐcdevµÄÒ»¸ö¼¯ºÏ£¬cdev_addº¯Êý¸ºÔð°ÑÖ¸¶¨µÄcdev¼ÓÈëµ½Õâ¸ö¼¯ºÏÖУ¬ÒÔ±ãÒÔºóµÄ²éѯ
2£¬line_discipline²ã£¨Ïß·¹æ³Ì£©
ÕâÒ»²ãͨ¹ýtty_structµÄldisc³ÉԱʵÏÖ²»Í¬µÄÏß·¹æ³Ì£¬¸ºÔðÁ¬½ÓÉϲãµÄÎļþ²Ù×÷ºÍϲãµÄtty²Ù×÷£¬²¢ÇÒ¼ÓÈëÏß·¹æ³Ì²ãµÄ´¦ÀíÂß¼£»ÀýÈçtty_writeÊǵ¼³ö¸øÉϲãÎļþµÄд²Ù×÷º¯Êý£¬Õâ¸öº¯ÊýÒ»°ã»áµ÷ÓÃÏß·¹æ³Ì³ÉÔ±ldiscµÄwriteº¯Êý£¬ÔÙÓɺóÕßµ÷ÓÃttyÇý¶¯£¨ÀýÈçn_ttyÖоÍÊǵ÷ÓÃwrite_chanµÄ£©£¬È«²¿µÄµ¼³öº¯ÊýÈçÏ£º
static const struct file_operations tty_fops = {
.llseek = no_llseek,
.read = tty_read,
.write = tty_write,
.poll = tty_poll,
.ioctl = tty_ioctl,
.open = tty_open,//tty_openÊǸö±È½ÏÖØÒªµÄº¯Êý£¬ÒòΪÕâ¸öº¯Êý»áµ÷ÓÃinit_dev£¬ºóÕß»á³õʼ»¯ÖØÒªµÄ½á¹¹tty_struct£¬²¢ÇÒÉèÖÃfileµÄprivate_dataΪtty_structʵÀý
.release = tty_release,
.fasync = tty_fasync,
};
3£¬tty²ã
½éÓÚÏß·¹æ³Ì²ãºÍÓ²¼þÇý¶¯Ö®¼ä£¬ÏòÉÏΪÏß·¹æ³ÌÌṩ½Ó¿Ú£¨tty_driver£©£¬ÏòÏÂÔòÌṩӲ¼þ¹ÜÀí£¨ÀýÈçtty_operations.start£©£»Ð´²Ù×÷£¨ÀýÈçtty_operations.write£©ÏòÏß·¹æ³Ì²ãÌṩ£¨ÒòΪЩ²Ù×÷Ò»°ã¶¼ÊÇÏß·¹æ³Ì²ãÖ÷¶¯·¢Æð£¬¶ø¶Á²Ù×÷ÔòÊÇÓ²¼þ²ãÖ÷¶¯·¢Æð£©£¬ËùÓеÄд²Ù×÷Êý¾Ý¶¼ÊǽøÈëµ½tty²ãµÄÒ»¸öcircle bufferÖУ¬tty²ã»áÔÚÊʵ±µÄʱºòµ÷ÓÃÓ²¼þ²ãµÄд²Ù×÷À´Êä³öÕâЩÊý¾Ý£»¶ø¶Á²Ù×÷£¨ÀýÈçtty_insert_flip_string£©ÔòÏòÓ²¼þ²ãÌṩ£¬ËùÓжÁÈëÊý¾Ý¶¼´æ·ÅÔÚttyµÄread bufferÖУ¬ÔÚÊʵ±µÄʱºòread bufferÖеÄÊý¾Ý»áͨ¹ýflush_to_ldiscº¯ÊýÍÆË͵½Ïß·¹æ³Ì²ã£¨¾ßÌåµÄÓ²¼þÇý¶¯ÔÚÍê³ÉÊý¾Ý½ÓÊÕºó£¬ÐèÒªµ÷ÓÃtty_flip_buffer_pushº¯ÊýÀ´ÍÆËÍÊý¾Ý£©
×¢£ºtty_bufhead½á¹¹ÖÐÓÐÒ»¸öwork_struct½á¹¹£¬Õâ¸ö½á¹¹¸ºÔð
Ïà¹ØÎĵµ£º
´ÇÖ°Ö®ºóһֱûÓÐÕÒ¹¤×÷£¬²»ÊÇÕÒ²»µ½£¬Ö»ÊDz»ÂúÒâ´ýÓöÎÊÌâ¡£ÔÚ´òÁËÒ»¸öÔÂÓÎÏ·Ö®ºóÓÚ×òÌ쿪ʼ½Ó´¥linuxϵͳ¡£
ÎÒÓõÄÊÇubuntu£¬¾ßÌå°²×°µÄʱºòûÓÐ×ÐϸµÄ·ÖÇø£¬Ö÷ÒªÊÇ/boot·ÖÁË256M£»¹ÒÔØµã£¨swap)·ÖÁË1GB£»/·ÖÁËËùÓеġ£
ÔÚ°²×°Ö®ºóÓöµ½µÄµÚÒ»¸öÎÊÌâÊÇÒÔǰwindowsϵÄrar²»Äܽâѹ£¬ËæºóÕÒÁËÒ»Ð©ÍøÂçÏà¹ØµÄÎļþ¡£¾ßÌå·½·¨Ê ......
linuxÃüÁîÐÐÏÂÓÃFetion·ÉÐÅ·¢ËÍÃâ·Ñ¶ÌÐÅ
Ò»¡¢×îа汾2009
ͨ¹ýlinuxÃüÁîÐÐÀ´·¢ËͶÌÐŵķ½·¨£¬¾õµÃÉõÊǺÃÓã¬ÊÊÓÃÔËά¼à¿Ø¡£ÕâÀïÏò´ó¼ÒÍÆ¼öµÄÊÇ·ÉÐÅ»úÆ÷È˵ÄÈí¼þ£¬Ö§³Ölinux¡¢ÃüÁîÐÐϵķÉÐÅ¡¢ÍêÈ«Ãâ·Ñ£¨Ä¿Ç°ÎªÖ¹£©£» ¹ÙÍøµØÖ·£º http://www.it-adv.net/
»·¾³ debian lenny
ÏÂÔØ×îÐÂlinux°æ±¾¿Í»§¶Ë http://bbs.it-ad ......
1£¬Çý¶¯³ÌÐòÈë¿ÚºÍ³ö¿Úµã
module_init£ºÇý¶¯³ÌÐò³õʼ»¯Èë¿Úµã£¬º¯ÊýÔÐÍ£ºmodule_init ( x)£¬xΪÆô¶¯Ê±»ò²åÈëÄ£¿éʱҪÔËÐеĺ¯Êý¡£Èç¹ûÔÚÆô¶¯Ê±¾ÍÈ·ÈϰÑÕâ¸öÇý¶¯³ÌÐò ²åÈëÄں˻òÒÔ¾²Ì¬ÐγÉÁ´½Ó£¬Ôòmodule_init ½«Æä³õʼ»¯Àý³Ì¼ÓÈëµ½"__initcall.int"´úÂë¶Î£¬·ñÔò½«ÓÃinit_module·â×°Æä³õʼ»¯Àý³Ì£¬ÒÔ±ã¸ÃÇý¶¯³ÌÐò×÷Ϊģ¿éÀ ......
1¡¢LINUXϵͳÆô¶¯¼¶±ð
²é¿´/etc/inittabÎļþ£¬ÆäÖ÷ÒªÄÚÈÝÈçÏ£º
#
0
-
halt (Do NOT set initdefault to
this
)
#
1
-
Single user mode
#
2
-
Multiuser, without NFS ......
Swap£¬¼´½»»»Çø£¬³ýÁ˰²×°LinuxµÄʱºò£¬ÓжàÉÙÈ˹ØÐĹýËüÄØ?Æäʵ£¬SwapµÄµ÷Õû¶ÔLinux·þÎñÆ÷£¬ÌرðÊÇWeb·þÎñÆ÷µÄÐÔÄÜÖÁ¹ØÖØÒª¡£Í¨¹ýµ÷ÕûSwap£¬ÓÐʱ¿ÉÒÔÔ½¹ýϵͳÐÔÄÜÆ¿¾±£¬½ÚʡϵͳÉý¼¶·ÑÓá£
¡¡¡¡SwapµÄÔÀíÊÇÒ»¸ö½Ï¸´ÔÓµÄÎÊÌ⣬ÐèÒª´óÁ¿µÄƪ·ùÀ´ËµÃ÷¡£ÔÚÕâÀïÖ»×÷¼òµ¥µÄ½éÉÜ£¬ÔÚÒÔºóµÄÎÄÕÂÖн«ºÍ´ó¼ÒÏêϸÌÖÂÛSwapʵÏÖµÄϸ½Ú ......