关于ticks_to_floppy_on和floppy_on的疑问
来源:互联网 发布:2016新能源数据 编辑:程序博客网 时间:2024/06/07 03:20
int ticks_to_floppy_on(unsigned int nr){extern unsigned char selected;unsigned char mask = 0x10 << nr;if (nr>3)panic("floppy_on: nr>3");moff_timer[nr]=10000;/* 100 s = very big :-) */cli();/* use floppy_off to turn it off */mask |= current_DOR;if (!selected) {mask &= 0xFC;mask |= nr;}if (mask != current_DOR) {outb(mask,FD_DOR);if ((mask ^ current_DOR) & 0xf0)mon_timer[nr] = HZ/2;else if (mon_timer[nr] < 2)mon_timer[nr] = 2;current_DOR = mask;}sti();return mon_timer[nr];}void floppy_on(unsigned int nr){cli();while (ticks_to_floppy_on(nr))sleep_on(nr+wait_motor);sti();}
上面的代码来自linux0.11代码中的sched.c,我的问题是floppy_on中的cli和sti是不是可以不要?因为ticks_to_floppy_on里面已经使用了cli和sti,而sleep_on是不需要屏蔽中断来保护的。大神写的代码,是不是应该说:多一行觉得多余,少一行又不能实现逻辑?因为tick_to_floppy_on函数开始不久就调用cli了,难道是ticks_to_floppy_on开始处与ticks_to_floppy_on中调用的cli之间需要保护?并且ticks_to_floppy_on返回的时候,肯定已经调用过sti了,接下来的floppy_on中的sti也根本没有必要。欢迎拍砖!
0 0
- 关于ticks_to_floppy_on和floppy_on的疑问
- 关于attach和detach的疑问
- 关于DestroyWindow()和PostQuitMessage()的少许疑问
- 关于防火墙,IPS和IDS的疑问?
- 【笔记】关于HBase的总结和疑问
- 关于cookie和session的疑问
- 关于javascript的疑问
- 关于变压器的疑问
- 关于 LoadLibrary 的疑问
- 关于junit的疑问
- 关于pthread_testcancel()的疑问
- 关于 retainCount 的疑问
- 关于Midi的疑问
- 关于IO的疑问
- 关于const_cast的疑问
- 关于scanf的疑问
- 关于C++的疑问
- 关于sort()的疑问?
- 浏览器 CSS & JS Hack 手册
- TF-IDF与余弦相似性的应用(三):自动摘要(系列三篇)
- 系统升级改造的问题与实践
- 计算机发展及现状
- Linux C一站式学习习题答案5.1.1
- 关于ticks_to_floppy_on和floppy_on的疑问
- Linux C一站式学习习题答案5.1.2 四舍五入
- 明天放假么亲。
- 說卦
- 关于POSIX标准中的信号
- 通过excel模板批量导入数据实现过程总结
- ofbiz导入eclipse报错解决方法
- ArrayList的使用方法【转载】
- flash的读写和擦除