rem: { BLKDEV_DMA_ALIGNMENT, B_UINT32_TYPE, { ui32: 1 }},
add: { B_BLOCK_DEVICE_DMA_ALIGNMENT, B_UINT32_TYPE, { ui32: 1 }},
context: publish_channel(device_node_handle parent, io_resource_handle *resources, 	uint16 command_block_base, uint16 control_block_base, uint8 intnum, 	const char *name){	device_attr attrs[] = {		// info about ourself and our consumer		{ B_DRIVER_MODULE, B_STRING_TYPE, { string: IDE_ISA_MODULE_NAME }},		{ B_DRIVER_FIXED_CHILD, B_STRING_TYPE, { string: IDE_FOR_CONTROLLER_MODULE_NAME }},		{ PNP_DRIVER_CONNECTION, B_STRING_TYPE, { string: name }},		// properties of this controller for ide bus manager		{ IDE_CONTROLLER_MAX_DEVICES_ITEM, B_UINT8_TYPE, { ui8: 2 }},		{ IDE_CONTROLLER_CAN_DMA_ITEM, B_UINT8_TYPE, { ui8: 0 }},		{ IDE_CONTROLLER_CAN_CQ_ITEM, B_UINT8_TYPE, { ui8: 1 }},		{ IDE_CONTROLLER_CONTROLLER_NAME_ITEM, B_STRING_TYPE, { string: name }},		// DMA properties; the 16 bit alignment is not necessary as 		// the ide bus manager handles that very efficiently, but why 		// not use the block device manager for doing that?		{ BLKDEV_DMA_ALIGNMENT, B_UINT32_TYPE, { ui32: 1 }},		// private data to identify device		{ IDE_ISA_COMMAND_BLOCK_BASE, B_UINT16_TYPE, { ui16: command_block_base }},		{ IDE_ISA_CONTROL_BLOCK_BASE, B_UINT16_TYPE, { ui16: control_block_base }},		{ IDE_ISA_INTNUM, B_UINT8_TYPE, { ui8: intnum }},		{ NULL }	};	device_node_handle node;	SHOW_FLOW0(2, "");	return pnp->register_device(parent, attrs, resources, &node);}