亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? zlg_fs.c

?? atmel de booloader 內(nèi)有源代碼 用blb編譯
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    }    if (DiskInfo[num] == NULL)    {        return -ENODEV;    }    //local_irq_save(flag);    ZLG_FS_usage[num]--;    if (ZLG_FS_usage[num] == 0)    {        part1 = (num << ZLG_FS_SHIFT);        npart = 1 << ZLG_FS_SHIFT;        for (i = 0; i < npart; i++)        {            fsync_dev(MKDEV(major, part1++));        }                dp.RsvdForLow = DiskInfo[num]->RsvdForLow;        DiskInfo[num]->DiakCommand(DISK_CLOSE, &dp);        if (DiskInfo[num]->release != NULL)        {            DiskInfo[num]->release(inode, filp);        }    }    //local_irq_restore(flag);    MOD_DEC_USE_COUNT;    return 0; } /*********************************************************************************************************** Function name: zlg_fs_ioctl** Descriptions: IO control function** Input:inode:  information of device**       filp:   pointer of file**       cmd:    command**       arg:    additive parameter** Output 0:     OK**        other: not OK** Created by:   Chenmingji** Created Date: 2005-05-25**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int zlg_fs_ioctl(struct inode *inode, struct file *filp,                     unsigned int cmd, unsigned long arg){    long err, size;    struct hd_geometry geo;    int num;    num = DEVICE_NR(inode->i_rdev);    if (num >= MAX_DISKS)    {        return -ENODEV;    }    if (DiskInfo[num] == NULL)    {        return -ENODEV;    }    switch(cmd)     {        case BLKGETSIZE:            /* Return the device size, expressed in sectors */            if (arg == 0)            {                return -EINVAL; /* NULL pointer: not valid */            }            if(access_ok(VERIFY_WRITE, arg, sizeof(long)) == 0)            {                return -EFAULT;            }            size = zlg_fs_gendisk.part[MINOR(inode->i_rdev)].nr_sects;	        if (copy_to_user((long *) arg, &size, sizeof (long)))	        {	            return -EFAULT;	        }            return 0;//        case BLKFLSBUF: /* flush *///            if (! capable(CAP_SYS_RAWIO)) return -EACCES; /* only root *///            fsync_dev(inode->i_rdev);//            invalidate_buffers(inode->i_rdev);//            return 0;//        case BLKRAGET: /* return the readahead value *///            err = ! access_ok(VERIFY_WRITE, arg, sizeof(long));//            if (err) return -EFAULT;//            PUT_USER(read_ahead[MAJOR(inode->i_rdev)],(long *) arg);//            return 0;//        case BLKRASET: /* set the readahead value *///            if (!capable(CAP_SYS_RAWIO)) return -EACCES;//            if (arg > 0xff) return -EINVAL; /* limit it *///            read_ahead[MAJOR(inode->i_rdev)] = arg;//            return 0;                case BLKRRPART: /* re-read partition table: can't do it */            return zlg_fs_revalidate(inode->i_rdev);        case HDIO_GETGEO:           /*	        * Get geometry: since we are a virtual device, we have to make	        * up something plausible.  So we claim 16 sectors, four heads,	        * and calculate the corresponding number of cylinders.  We set the	        * start of data at sector four.            */            if (access_ok(VERIFY_WRITE, arg, sizeof(geo)) == 0)            {                return -EFAULT;            }            size = DiskInfo[num]->SecPerDisk;            geo.cylinders = (size & ~0x3f) >> 6;	        geo.heads = 4;	        geo.sectors = 16;	        geo.start = 0;	        if (copy_to_user((void *) arg, &geo, sizeof(geo)))	        {	            return -EFAULT;	        }            return 0;        default:        /*         * For ioctls we don't understand, let the block layer handle them.         */            return blk_ioctl(inode->i_rdev, cmd, arg);    }    return -ENOTTY; /* unknown command */}/*********************************************************************************************************** Function name: check_zlg_fs_change** Descriptions: ** Input:dev:** Output 0:     OK**        other: not OK** Created by:   Chenmingji** Created Date: 2005-05-25**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int check_zlg_fs_change(kdev_t dev){    int num;    Disk_RW_Parameter dp;    num = DEVICE_NR(dev);    if (num >= MAX_DISKS)    {        return -ENODEV;    }    if (DiskInfo[num] == NULL)    {        return -ENODEV;    }    dp.RsvdForLow = DiskInfo[num]->RsvdForLow;    if (DiskInfo[num]->DiakCommand(DISK_CHECK_CHANGE, &dp) == DISK_TRUE)    {        return 1;    }    return 0;}/*********************************************************************************************************** Function name: zlg_fs_revalidate** Descriptions: revalidate device** Input:dev:    nformation of device** Output 0:     OK**        1:     not OK** Created by:   Chenmingji** Created Date: 2005-05-25**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int zlg_fs_revalidate(kdev_t dev){    int num;    unsigned long flag;    int part1, npart, i;    num = DEVICE_NR(dev);    if (num >= MAX_DISKS)    {        return -ENODEV;    }    if (DiskInfo[num] == NULL)    {        return -ENODEV;    }    if (DiskInfo[num]->get_info == NULL)    {        return -ENODEV;    }    DiskInfo[num]->get_info(DiskInfo[num]);    part1 = num << ZLG_FS_SHIFT;    npart = 1 << ZLG_FS_SHIFT;    memset(zlg_fs_gendisk.part + part1, 0, npart * sizeof(struct hd_struct));    //local_irq_save(flag);     for (i = 0; i < npart; i++)    {        ZLG_FS_blocksizes[part1] = DiskInfo[num]->BytesPerSec;        ZLG_FS_sizes[part1] = (DiskInfo[num]->SecPerDisk * ZLG_FS_blocksizes[num])                              / 1024;               part1++;    }    zlg_fs_gendisk.part[num << ZLG_FS_SHIFT].nr_sects = DiskInfo[num]->SecPerDisk;        register_disk(&zlg_fs_gendisk, dev, 1 << ZLG_FS_SHIFT,                  &zlg_fs_fops, DiskInfo[num]->SecPerDisk);    //local_irq_restore(flag);    return 0;}/*********************************************************************************************************** Function name: zlg_fs_init** Descriptions: init driver** Input:none** Output 0:     OK**        other: not OK** Created by:   Chenmingji** Created Date: 2005-05-25**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        int  zlg_fs_init(void){    int  result, i;    result = register_blkdev(MAJOR_NR,  DEVICE_NAME,  &zlg_fs_fops);     if (result < 0)    {        printk(KERN_ERR DEVICE_NAME ": Unable to get major %d\n", MAJOR_NR );        return(result);     }     if (MAJOR_NR == 0)    {        MAJOR_NR = result; /* dynamic */    }    zlg_fs_gendisk.major = major;    zlg_fs_gendisk.major_name = DEVICE_NAME;    zlg_fs_gendisk.minor_shift = ZLG_FS_SHIFT;    zlg_fs_gendisk.max_p = 1 << ZLG_FS_SHIFT;    zlg_fs_gendisk.fops = &zlg_fs_fops;    zlg_fs_gendisk.sizes = ZLG_FS_sizes;    zlg_fs_gendisk.nr_real = MAX_DISKS;    zlg_fs_gendisk.part = part;    zlg_fs_gendisk.next = gendisk_head;    gendisk_head = &zlg_fs_gendisk;     //blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), zlg_fs_queue);    blk_queue_make_request(BLK_DEFAULT_QUEUE(MAJOR_NR), zlg_fs_make_request);    blk_size[MAJOR_NR] = ZLG_FS_sizes;    blksize_size[MAJOR_NR] = ZLG_FS_blocksizes;    printk(KERN_INFO DEVICE_NAME ": init OK\n");    return 0; }/*********************************************************************************************************** Function name: zlg_fs_cleanup** Descriptions: exit driver** Input:none** Output none** Created by:   Chenmingji** Created Date: 2005-05-25**-------------------------------------------------------------------------------------------------------** Modified by:  Chenmingji** Modified Date:2005-08-20 **------------------------------------------------------------------------------------------------------********************************************************************************************************/        void zlg_fs_cleanup(void){    struct gendisk *gdp;    /* Get our gendisk structure off the list. */    if (gendisk_head == &zlg_fs_gendisk)    {        gendisk_head = zlg_fs_gendisk.next;    }    else    {        gdp = gendisk_head;        while (gdp->next != NULL)        {            if (gdp->next == &zlg_fs_gendisk)            {                gdp->next = zlg_fs_gendisk.next;                break;            }            gdp = gdp->next;        }    }    unregister_blkdev(MAJOR_NR, DEVICE_NAME);}/***********************************************************************************************************                            End Of File********************************************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品电影一区亚洲| 亚洲精品视频在线观看免费| 欧美电影免费观看高清完整版在 | 久久66热偷产精品| 日韩影院精彩在线| 国产在线一区二区综合免费视频| 国产最新精品精品你懂的| 国产成人亚洲综合a∨婷婷| 国产精品18久久久久久久网站| 成人免费看的视频| 欧美军同video69gay| 久久久不卡影院| 亚洲制服丝袜在线| 久久99国内精品| 欧美在线观看禁18| 日韩精品一区二区三区视频在线观看| 久久久久久黄色| 亚洲动漫第一页| 99国产欧美另类久久久精品| 欧美男女性生活在线直播观看| 国产三级欧美三级| 亚洲一区二区三区美女| 福利一区福利二区| 制服丝袜成人动漫| 亚洲卡通动漫在线| 不卡的看片网站| 久久一夜天堂av一区二区三区| 一区二区三区成人在线视频| 国产综合久久久久久久久久久久| 精品视频在线免费看| 欧美国产欧美综合| 麻豆精品在线播放| 91成人在线精品| 亚洲日本一区二区三区| 国产不卡在线一区| 18涩涩午夜精品.www| 成人激情文学综合网| 中文成人av在线| 成人一区二区三区视频在线观看 | 国产精品免费aⅴ片在线观看| 日本不卡123| 精品国精品国产| 九九**精品视频免费播放| 欧美tickling挠脚心丨vk| 日本三级亚洲精品| 久久免费看少妇高潮| 99在线热播精品免费| 亚洲成人黄色小说| 久久久久久综合| 欧日韩精品视频| 国产美女主播视频一区| 五月天精品一区二区三区| 久久精品男人的天堂| 欧美高清视频www夜色资源网| 国产一区二区调教| 亚洲国产精品久久一线不卡| 国产日韩欧美综合一区| 欧美男生操女生| 91女厕偷拍女厕偷拍高清| 国产在线不卡视频| 美女精品一区二区| 亚洲国产视频在线| 亚洲自拍偷拍网站| 日韩一区在线看| 国产精品护士白丝一区av| 色94色欧美sute亚洲线路一久 | 国产·精品毛片| 免费观看在线综合| 日韩精品欧美成人高清一区二区| 欧美韩国日本不卡| 欧美va日韩va| 精品欧美一区二区在线观看| 欧美日韩你懂的| 欧美亚男人的天堂| 欧洲中文字幕精品| 欧美日韩国产另类不卡| 欧美三级电影一区| 欧美亚洲日本国产| 欧美一区二区三区在线观看视频| 91精品国产综合久久久蜜臀图片| 欧美亚洲综合网| 欧美日韩日日骚| 精品国产一区二区三区av性色| 6080亚洲精品一区二区| 91麻豆精品国产91久久久久久| 欧美高清www午色夜在线视频| 日韩一级欧美一级| 久久综合九色综合欧美98| 国产亚洲欧美一区在线观看| 久久综合999| 中文字幕制服丝袜成人av| 亚洲人成伊人成综合网小说| 亚洲午夜一区二区| 日本免费新一区视频| 韩国视频一区二区| 色综合天天性综合| 欧美一区二区三区在线电影| 久久网这里都是精品| 亚洲欧洲综合另类| 天堂午夜影视日韩欧美一区二区| 蜜乳av一区二区三区| 成人一区二区三区中文字幕| 欧美色涩在线第一页| 久久久久综合网| 亚洲超碰97人人做人人爱| 国产99久久久精品| 日韩三级.com| 一区二区在线观看不卡| 国产一区在线观看视频| 欧美日韩激情在线| 亚洲精品久久嫩草网站秘色| 国产精品夜夜嗨| 日韩欧美国产午夜精品| 依依成人综合视频| av在线不卡网| 久久免费精品国产久精品久久久久 | 欧美成人女星排行榜| 夜夜嗨av一区二区三区网页| 国产成人午夜精品5599| 日韩精品在线看片z| 亚洲bt欧美bt精品| 色老汉av一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 日本在线不卡一区| 日韩一区二区精品葵司在线| 亚洲高清免费视频| 色婷婷久久久亚洲一区二区三区| 久久久国产午夜精品| 国产麻豆精品95视频| 国产精品丝袜久久久久久app| 国产精品一区二区久久精品爱涩 | 99久久99久久精品免费看蜜桃| 日本一区二区三区dvd视频在线| 国产成人福利片| 国产精品久久久久aaaa| 91久久线看在观草草青青| 亚洲综合激情网| 欧美xfplay| 91小视频在线免费看| 丝袜美腿亚洲色图| 久久综合九色欧美综合狠狠| 成人精品小蝌蚪| 午夜a成v人精品| 亚洲国产精品成人久久综合一区| 欧美一a一片一级一片| 精品写真视频在线观看 | 国产91在线|亚洲| 午夜精品久久久久久久久久 | 精品中文字幕一区二区| 中文字幕一区日韩精品欧美| 欧美一二三区在线观看| 91在线免费视频观看| 日本午夜一区二区| 亚洲一区在线观看免费观看电影高清| 26uuu国产电影一区二区| 精品视频1区2区| 成人福利视频网站| 国产综合色精品一区二区三区| 亚洲一级在线观看| 综合在线观看色| 最新久久zyz资源站| 久久久久9999亚洲精品| 欧美精品乱码久久久久久| 91色.com| 色欧美88888久久久久久影院| 国产成人午夜片在线观看高清观看| 日本视频中文字幕一区二区三区| 亚洲欧美视频一区| 亚洲三级在线免费观看| 亚洲国产精品av| 国产精品理论在线观看| 国产精品午夜在线观看| 欧美国产欧美综合| 国产精品传媒视频| 中文字幕一区二区三区在线观看| 欧美国产国产综合| 亚洲男人的天堂在线aⅴ视频| 一区二区三区高清不卡| 午夜精品久久久久久久| 日本伊人午夜精品| 国产精品一二二区| 在线精品亚洲一区二区不卡| 欧美喷水一区二区| 欧美精品一区二| 亚洲人快播电影网| 久久91精品国产91久久小草| 国内精品久久久久影院一蜜桃| 岛国精品一区二区| 欧美性高清videossexo| wwwwww.欧美系列| 亚洲午夜一区二区三区| 国产成人午夜视频| 6080yy午夜一二三区久久| 久久新电视剧免费观看| 亚洲日穴在线视频| 久久国产精品一区二区| 91福利视频在线| 国产精品视频免费| 麻豆精品新av中文字幕| 欧美性生交片4|