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

linux 0.11 ÄÚºËѧϰ char_dev.c


/*
 *  linux/fs/char_dev.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <errno.h>
#include <sys/types.h> // ¶¨ÒåÁË»ù±¾µÄϵͳÊý¾ÝÀàÐÍ
#include <linux/sched.h>
#include <linux/kernel.h> // º¬ÓÐһЩÄں˳£Óú¯ÊýµÄÔ­Ðζ¨Òå
#include <asm/segment.h>
#include <asm/io.h>
/* Öж϶Á */
extern int tty_read(unsigned minor,char * buf,int count);
/* ÖжÏд */
extern int tty_write(unsigned minor,char * buf,int count);
/* ¶¨Òå×Ö·ûÉ豸¶Áдº¯ÊýÖ¸ÕëÀàÐÍ */
typedef (*crw_ptr)(int rw,unsigned minor,char * buf,int count,off_t * pos);
/* ´®¿ÚÖն˶Áд²Ù×÷º¯Êý¡£²ÎÊý £º rw¶ÁдÃüÁminorÖжÏ×ÓÉ豸ºÅ£¬buf»º³åÇø */
/* count¶ÁдµÄ×Ö½ÚÊý£¬pos¶Áд²Ù×÷µ±Ç°Ö¸Õ룬·µ»Øʵ¼Ê¶ÁдµÄ×Ö½ÚÊý  */
static int rw_ttyx(int rw,unsigned minor,char * buf,int count,off_t * pos)
{
return ((rw==READ)?tty_read(minor,buf,count):
tty_write(minor,buf,count));
}
/* Öն˶Áд²Ù×÷º¯Êý£¬Ö»ÊÇÔö¼ÓÁ˶Խø³ÌÊÇ·ñÓпØÖÆÖն˵ļì²â */
static int rw_tty(int rw,unsigned minor,char * buf,int count, off_t * pos)
{
// Èô½ø³ÌûÓжÔÓ¦µÄ¿ØÖÆÖնˣ¬Ôò·µ»Ø³ö´íºÅ
if (current->tty<0)
return -EPERM;
return rw_ttyx(rw,current->tty,buf,count,pos);
}
/* ÄÚ´æÊý¾Ý¶Áдº¯Êý£¬»¹Ã»ÊµÏÖ */
static int rw_ram(int rw,char * buf, int count, off_t *pos)
{
return -EIO;
}
/* ÄÚ´æÊý¾Ý¶Áд²Ù×÷º¯Êý¡£Î´ÊµÏÖ */
static int rw_mem(int rw,char * buf, int count, off_t * pos)
{
return -EIO;
}
/* ÄÚºËÊý¾ÝÇø¶Áдº¯Êý¡£Î´ÊµÏÖ */
static int rw_kmem(int rw,char * buf, int count, off_t * pos)
{
return -EIO;
}
/* ¶Ë¿Ú¶Áд²Ù×÷º¯Êý£¬²ÎÊý £º rw¶ÁдÃüÁbuf»º³åÇø£¬count¶Áд×Ö½ÚÊý£¬pos */
/* ¶Ë¿ÚµØÖ·£¬·µ»ØµÄÊÇʵ¼Ê¶ÁдµÄ×Ö½ÚÊý */
static int rw_port(int rw,char * buf, int count, off_t * pos)
{
int i=*pos; // ¶Ë¿ÚµØÖ·
// ¶ÔÓÚËùÒªÇó¶ÁдµÄ×Ö½ÚÊý£¬²¢ÇҶ˿ڵØַСÓÚ64k
while (count-->0 && i<65536) 
{
// ÈôÊǶÁÃüÁÔò´Ó¶Ë¿Úi ÖжÁÈ¡Ò»×Ö½ÚÄÚÈݲ¢·Åµ½Óû§»º³åÇøÖÐ
if (rw==READ)
put_fs_byte(inb(i),buf++);


Ïà¹ØÎĵµ£º

¡¶LINUXÉ豸Çý¶¯³ÌÐò¡·Ñ§Ï°Ôý¼Ç£¨¶þ£©

×ܽáÕ½ڣºµÚÈý½Ú ×Ö·ûÉ豸Çý¶¯
ÕâÒ»ÕÂÖ÷ÒªÊǽ²Ò»Ð©×Ö·ûÉ豸Çý¶¯³ÌÐòµÄÏà¹Ø֪ʶ¡£ÔÚ½øÐÐ×Ö·ûÉ豸Çý¶¯³ÌÐòѧϰ֮ǰ£¬ÎÒÃDZØÐëµÃŪÃ÷°×Ò»¸öÎÊÌ⣺Çý¶¯³ÌÐòʱ¸øË­Óõġ£
ºÜ¶àÇý¶¯³ÌÐòµÄ³õѧÕߣ¬°´ÕÕÒ»°ã±à³ÌÓïÑÔ£¨C£¬javaµÈµÈ£©±àдӦÓóÌÐòµÄ¾­Ñ飬º¯Êý¾ÍÊÇÓÃÀ´µ÷Óõġ£ÕâÖÖµ÷ÓùØϵ£¬ÔÚÓ¦ÓÿռäÀ´¿´£¬ÏÞÖƲ»ÊǺÜÃ÷ÏÔ¡£ºÜ¶à ......

linuxÏß³Ìͬ²½Ö®Ìõ¼þ±äÁ¿

    Ìõ¼þ±äÁ¿Í¨¹ýÔÊÐíÏß³Ì×èÈûºÍµÈ´ýÁíÒ»¸öÏ̷߳¢ËÍÐźŵķ½·¨ÃÖ²¹ÁË»¥³âËøµÄ²»×㣬Ëü³£ºÍ»¥³âËøÒ»ÆðʹÓá£Ê¹ÓÃʱ£¬Ìõ¼þ±äÁ¿±»ÓÃÀ´×èÈûÒ»¸öỊ̈߳¬µ±Ìõ¼þ²»Âú×ãʱ£¬Ïß³ÌÍùÍù½â¿ªÏàÓ¦µÄ»¥³âËø²¢µÈ´ýÌõ¼þ·¢Éú±ä»¯¡£Ò»µ©ÆäËüµÄij¸öÏ̸߳ıäÁËÌõ¼þ±äÁ¿£¬Ëü½«Í¨ÖªÏàÓ¦µÄÌõ¼þ±äÁ¿»½ÐÑÒ»¸ö»ò¶à¸öÕý±»´ËÌõ¼þ±äÁ¿×èÈûµ ......

LinuxÉÏautofsÅäÖü°Æä˵Ã÷....

             °æȨÉùÃ÷£ºÔ­´´×÷Æ·£¬ÔÊÐíתÔØ£¬×ªÔØʱÇëÎñ±ØÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕ ԭʼ³ö´¦ ¡¢×÷ÕßÐÅÏ¢ºÍ±¾ÉùÃ÷¡£·ñÔò½«×·¾¿·¨ÂÉÔðÈΡ£http://blog.csdn.net/Neverland2012  
         ÎÒÃǾ­³£»áÈ¥ÏÂÔرð ......

linuxÄÚºË lock free


//
ͬ²½ÎÊÌ⣺
¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐèҪͬ²½£¬»¥³â¡£
ÔÚÖжϣ¬ÇÀÕ¼£¬¶àCPU£¬¶àÏß³Ì »·¾³ÏÂÓÈÆäÖØÒª¡£
ͬ²½·ÖΪ: ×èÈûͬ²½£¬·Ç×èÈûͬ²½
×èÈûͬ²½ÓÐÐí¶àʵÏÖ·½Ê½ÁË£ºmutex, semaphore. ×èÈûͬ²½Ê¹Óò»µ±¾Í¿ÉÄÜÔì³ÉËÀËø£¬»îËø£¬ÓÅÏȼ¶·´×ª¡£
·Ç×èÈûͬ²½£º£¨ÏÖÔÚÁ÷ÐÐÈýÖÖ£©
wait free ºÜÄÑʵÏÖ£¬Ë¼ÏëÊDZ¾Ïß³ÌÓÐÏÞ²½¾Í ......

Linux ÄÚºËÅäÖÃ

LinuxÄÚºËÅäÖð취£º
1. make config
ÕâÖÖ°ì·¨»á±éÀúËùÓÐÅäÖÃÏҪÇóÓû§Öð¸öÑ¡ÔñY/N/M
2. make menuconfig
Õâ¸ö°ì·¨ÊÇ»ùÓÚncurse¿â±àÖƵÄͼÐνçÃ湤¾ß¡£³£ÓÃ
3. make xconfig
ÓÃÓÚ»ùÓÚX11µÄͼÐι¤¾ß
4. make gconfig
ÓÃÓÚ»ùÓÚgtk+ͼÐι¤¾ß
5. make defconfig
´´½¨Ò»¸öĬÈϵÄÅäÖã¬Éú³Éµ±Ç°µÄ.config
6. make x ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ