4600: /* Used to dissect integer device code 4601: * into major (driver designation) and 4602: * minor (driver parameter) parts. 4603: */ 4604: struct { 4605: char d_minor; 4606: char d_major; 4607: }; 4608: /* --------------------------- */ 4609: /* Declaration of block device 4610: * switch. Each entry (row) is 4611: * the only link between the 4612: * main unix code and the driver. 4613: * The initialization of the 4614: * device switches is in the 4615: * file conf.c. 4616: */ 4617: struct bdevsw { 4618: int (*d_open)(); 4619: int (*d_close)(); 4620: int (*d_strategy)(); 4621: int *d_tab; 4622: } bdevsw[]; 4623: /* --------------------------- */ 4624: /* Nblkdev is the number of entries 4625: * (rows) in the block switch. It is 4626: * set in binit/bio.c by making 4627: * a pass over the switch. 4628: * Used in bounds checking on major 4629: * device numbers. 4630: */ 4631: int nblkdev; 4632: 4633: /* Character device switch. 4634: */ 4635: struct cdevsw { 4636: int (*d_open)(); 4637: int (*d_close)(); 4638: int (*d_read)(); 4639: int (*d_write)(); 4640: int (*d_sgtty)(); 4641: } cdevsw[]; 4642: /* --------------------------- */ 4643: 4644: /* Number of character switch entries. 4645: * Set by cinit/tty.c 4646: */ 4647: int nchrdev;