《操作系统设计与实现》Minix源码学习问题,希望高手指教,非常感谢
File: include/timers.h
/* Used when the timer is not active. */
#define TMR_NEVER ((clock_t) -1 < 0) ? ((clock_t) LONG_MAX) : ((clock_t) -1)
#undef TMR_NEVER
#define TMR_NEVER ((clock_t) LONG_MAX)
Q1:这句话执行后TMR_NEVER的结果是啥?为什么这样做?
File: include/sys/ioctl.h
#ifndef _S_IOCTL_H
#define _S_IOCTL_H
Q2:不太清楚防护宏到底怎样写才是标准??
File: include/sys/ioc_disk.h
#define DIOCSETP _IOW(’d’, 3, struct partition)
执行时只是直接替换吧,定义好奇怪。。
File: include/minix/sys_config.h
#ifndef _MINIX_MACHINE
error "In <minix/sys_config.h> please define _MINIX_MACHINE"// Q3:是这样用吗??有问题吧。
#endif
在File: kernel/priv.h中有
#if (NR_BOOT_PROCS > NR_SYS_PROCS)
#error NR_SYS_PROCS must be larger than NR_BOOT_PROCS
#endif
File: include/minix/ipc.h
/* Hide names to avoid name space pollution. */
#define echo _echo
#define notify _notify
#define sendrec _sendrec
Q4:如何达到avoid name space pollution ??
File: include/minix/syslib.h
/* Shorthands for sys_sdevio() system call. */
#define sys_insb(port, proc_nr, buffer, count) \
sys_sdevio(DIO_INPUT, port, DIO_BYTE, proc_nr, buffer, count)
#define sys_insw(port, proc_nr, buffer, count) \
sys_sdevio(DIO_INPUT, port, DIO_WORD, proc_nr, buffer, count)
#define sys_outsb(port, proc_nr, buffer, count) \
sys_sdevio(DIO_OUTPUT, port, DIO_BYTE, proc_nr, buffer, count)
Q5:是个啥意思呢??为什么这样做?程序编译时直接替换就行了,是吧?
File: kernel/proto.h
/* Exception handlers (real or protected mode), in numerical order. */
void _PROTOTYPE( int00, (void) ), _PROTOTYPE( divide_error, (void) );
void _PROTOTYPE( int01, (void) ), _PROTOTYPE( single_step_exception, (void) );
Q6:以上的声明没有问题吗?好像把两句写到一起了吧。。
void _PROTOTYPE( inval_tss, (void) );//这样肯定对的。
File: kernel/glo.h
extern struct boot_image image[]; /* system image processes */
extern char *t_stack[]; /* taskstackspace */
extern struct segdesc_s gdt[]; /* global descriptor table */