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½á¹¹£¬Õâ¸ö½á¹¹¸ºÔð
Ïà¹ØÎĵµ£º
ÕâÒ»ÕÂÎÒÃÇѧϰLinuxµÄʱ¼ä±íʾºÍ¼ÆË㺯Êý
1.ʱ¼äµÄ±íʾ
2.ʱ¼äµÄ²âÁ¿
3.¼ÆÊ±Æ÷µÄʹÓÃ
--------------------------------------------------------------------------------
1¡£Ê±¼ä±íʾ ÔÚ³ÌÐòµ±ÖÐ,ÎÒÃǾ³£ÒªÊä³öϵͳµ±Ç°µÄʱ¼ä,±ÈÈçÎÒÃÇʹÓÃdateÃüÁîµÄÊ ......
Ò».È¥³ýembedded linux µÄ¿ª»ú¹â±ê:
¡¡ÔÚÄں˵ĵ±Ç°Ä¿Â¼½øÈëµ½drivers/video/console/fbcon.cÎļþ
¡¡½«static void fb_flashcursor(void *private) ÀïµÄÄÚÈÝ×¢Ê͵ô,ʹ֮±ä³É¿Õº¯Êý
¶þ.ÉèÖÃLINUXÄÚºËÆô¶¯LOGO
(1)ÈÃÄÚºËÖ§³ÖÆô¶¯LOGO
ÔÚÄÚºËĿ¼ÖÐ ......
½âѹ¼¸ÖÖÎļþ¸ñʽ
wzwz.tar.gz——tar zxvf wzwz.tar.gz
wzwz.tar.bz2——tar jxvf wzwz.tar.bz2
wzwz.rpm——rpm -ivh wzwz.rpm
cpio——cpio -idm < wzwz.img
Éú³Éinitrd.img
dd if=/dev/zero of=/home/wzwz.img bs=1M count=10
mke2fs -F -v wzwz.i ......
ÕâÖ»ÊÇÔÝʱµÄ¼Ç¼£¬ÒÔºó»á°ÑËü¹éÀൽstart_kernel()º¯ÊýµÄ·ÖÎö¡£ÔÚ·ÖÎö֮ǰ£¬ÎÒÏÈҪ˵˵¼¸¸ö¸ÅÄî¡£
ÄÚºËÇÀÕ¼£ºÔÚ2.6Äں˼ÓÈëÁËÇÀÕ¼µÄÄÜÁ¦£¬¾ÍÊÇ˵µ÷¶È³ÌÐòÓа취ÔÚÒ»¸öÄں˼¶µÄÈÎÎñÕýÔÚÖ´ÐеÄʱºò´Óе÷¶È¡£µ«ÊDZØÐëÒª±£Ö¤ÖØÐµ÷¶ÈÒª°²È«£¬ÕâÑù¾ÍÒª¿¿Ò»°ÑËøÀ´±£Ö¤ÁË¡£
¼ÆÊýÆ÷£¨thread_info.[reempt_ ......
1¡¢LINUXϵͳÆô¶¯¼¶±ð
²é¿´/etc/inittabÎļþ£¬ÆäÖ÷ÒªÄÚÈÝÈçÏ£º
#
0
-
halt (Do NOT set initdefault to
this
)
#
1
-
Single user mode
#
2
-
Multiuser, without NFS ......