我想到了:
在第 43 行
/usr/src/include/minix/dmap.h
添加#define FAST_DEV 6
. 现在我们有一个符号来代表我们新设备的次要设备。这只是帮助我们避免幻数。
m_ioctl()
在
/usr/src/drivers/memory/memory.c
被硬编码以接收消息并创建 RAM 设备。为了使其通用更改RAM_DEV
(查看函数,它作为某个函数的参数存在)到m_ptr->DEVICE
. RAM_DEV
是 RAM 设备m_ptr->DEVICE
的次设备号,是请求要创建的次设备号(稍后会有意义)。此外,在该文件的第 28 行,您需要增加 的值,NR_DEVS
以允许程序能够创建我们现在要指定的新设备。然后在m_transfer()
函数中的第 143 行附近有一个m_device
case的开关RAM_DEV
,KMEM_DEV
并且在下面BOOT_DEV
添加。这将允许操作系统以与.case FAST_DEV
BOOT_DEV
RAM_DEV
在
/usr/src/servers/fs/main.c
你会看到main()
callfs_init()
依次调用load_ram()
. In是构造和发送load_ram()
消息(在 中接收)的位置。m_ioctl()
要为我们的新设备创建消息,请将以下内容添加到函数的开头:
m_out.m_type = DEV_IOCTL;
m_out.PROC_NR = FS_PROC_NR;
m_out.DEVICE = FAST_DEV; /* minor of fast device, this is why we had to make m_ioctl() generic */
m_out.REQUEST = MIOCRAMSIZE;
m_out.POSITION = 10485760 /* size of 10MB in bytes */
s = sendrec(MEM_PROCNR, &m_out); /* this sends the message */
现在重新编译:
cd /usr/src
make world
make install
and make all the directories that you worked in (just to be safe)
then shutdown
创建快速设备:
mknod /dev/fast b 1 6
编辑:
load_ram() 的说明:
PRIVATE void load_ram(void)
{
register struct buf *bp, *bp1;
...
...
int s;
/* add the code here */
m_out.m_type = DEV_IOCTL;
etc
}
对 switch 语句的说明:
case RAM_DEV:
case KMEM_DEV:
case BOOT_DEV:
case FAST_DEV: /* add this line */