LinuxÒÁµéÔ°ÂÛ̳'s Archiver

sfezst ·¢±íÓÚ 2007-12-22 09:35

Êý×éblkdevsµÄ·ÃÎÊ

ÏëÔÚÄ£¿éÖзÃÎÊÉ豸Êý×éblkdevs[]£¬µ«Êǰüº¬ÁËfs.hºÍblk.hºó»¹ÊdzöÏÖÊý×é䶨ÒåµÄÇé¿ö£¬Ôõô°ì£¿

zltjiangshi ·¢±íÓÚ 2007-12-22 10:29

Òª¿´Õû¸öµÄ´úÂ룬µ«´ÓÒ»¾ä»°¿´²»³öÎÊÌâ¡£

sfezst ·¢±íÓÚ 2007-12-24 23:20

»Ø¸´ #2 zltjiangshi µÄÌû×Ó

ÔÚsrcµÄ/fs/Block_dev.cÖÐÓÐÕâôһ¶Î¶¨Òå
static struct {
        const char *name;
        struct block_device_operations *bdops;
} blkdevs[MAX_BLKDEV];
ÓÃÀ´ÃèÊö¿éÉ豸µÄÊý×é
ÔÚ
int register_blkdev(unsigned int major, const char * name, struct block_device_operations *bdops)
{
        if (major == 0) {
                for (major = MAX_BLKDEV-1; major > 0; major--) {
                        if (blkdevs[major].bdops == NULL) {
                                blkdevs[major].name = name;
                                blkdevs[major].bdops = bdops;
                                return major;
                        }
                }
                return -EBUSY;
        }
        if (major >= MAX_BLKDEV)
                return -EINVAL;
        if (blkdevs[major].bdops && blkdevs[major].bdops != bdops)
                return -EBUSY;
        blkdevs[major].name = name;
        blkdevs[major].bdops = bdops;
        return 0;
}
ÖлáÓжÔËûµÄ·ÃÎÊ£¬ÏÖÔÚÎÒÏë×Ô¼º¶Ô¸ÃÊý×é·ÃÎÊÀ´Åж϶ÔÓ¦µÄÉ豸ÊÇ·ñ´æÔÚ¡£

zltjiangshi ·¢±íÓÚ 2007-12-25 21:51

staticµÄº¬Òå¾ÍÊǽ«Õâ¸ö±äÁ¿¾ÖÏÞÓÚÎļþÒÔÄÚ£¬ËùÒÔÄã²»ÄÜ·ÃÎÊÁË¡£

sfezst ·¢±íÓÚ 2007-12-25 22:36

»Ø¸´ #4 zltjiangshi µÄÌû×Ó

ÔÎÄÇ£¬ÕæµÄ¼ÙµÄ£¿²»ÊǾ²Ì¬È«¾Ö½á¹¹£¿Äܲ»ÄÜEXPORT_SYMBOL·ûºÅµ¼³ö

zltjiangshi ·¢±íÓÚ 2007-12-26 10:20

¡£¡£¡£¡£¡£staticµÄº¬Òå¾ÍÊÇÕâÑù£¬»¹ÖµµÃ»³ÒÉô£¿ÏÈ»ØÈ¥¿´¿´cÓïÑÔ»ù´¡½Ì³Ì°É¡£

sfezst ·¢±íÓÚ 2007-12-26 13:06

»Ø¸´ #6 zltjiangshi µÄÌû×Ó

:L Ū´íÁË¡£Ð»¹ýÁË¡£

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.