c += 'a' - 'A';
}
- // xxx hack
+ // Ignore unknown keystrokes.
if(c == 0x0) {
release(&kbd_lock);
return;
initlock(&console_lock, "console");
initlock(&kbd_lock, "kbd");
- devsw[CONSOLE].d_write = console_write;
- devsw[CONSOLE].d_read = console_read;
+ devsw[CONSOLE].write = console_write;
+ devsw[CONSOLE].read = console_read;
irq_setmask_8259A(irq_mask_8259A & ~(1 << IRQ_KBD));
ioapic_enable(IRQ_KBD, 0);
struct devsw {
- int (*d_open)(char*, int);
- int (*d_read)(int, char*, int);
- int (*d_write)(int, char*, int);
- int (*d_close)(int);
+ int (*read)(int, char*, int);
+ int (*write)(int, char*, int);
};
extern struct devsw devsw[];
void
stati(struct inode *ip, struct stat *st)
{
- st->st_dev = ip->dev;
- st->st_ino = ip->inum;
- st->st_type = ip->type;
- st->st_nlink = ip->nlink;
- st->st_size = ip->size;
+ st->dev = ip->dev;
+ st->ino = ip->inum;
+ st->type = ip->type;
+ st->nlink = ip->nlink;
+ st->size = ip->size;
}
#define min(a, b) ((a) < (b) ? (a) : (b))
struct buf *bp;
if(ip->type == T_DEV) {
- if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].d_read)
+ if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].read)
return -1;
- return devsw[ip->major].d_read(ip->minor, dst, n);
+ return devsw[ip->major].read(ip->minor, dst, n);
}
while(n > 0 && off < ip->size){
writei(struct inode *ip, char *addr, uint off, uint n)
{
if(ip->type == T_DEV) {
- if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].d_write)
+ if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].write)
return -1;
- return devsw[ip->major].d_write(ip->minor, addr, n);
+ return devsw[ip->major].write(ip->minor, addr, n);
} else if(ip->type == T_FILE || ip->type == T_DIR) {
struct buf *bp;
int r = 0;
exit();
}
- switch(st.st_type) {
+ switch(st.type) {
case T_FILE:
pname(argv[1]);
- printf(1, "%d %d %d\n", st.st_type, st.st_ino, st.st_size);
+ printf(1, "%d %d %d\n", st.type, st.ino, st.size);
break;
case T_DIR:
- sz = st.st_size;
+ sz = st.size;
for(off = 0; off < sz; off += sizeof(struct dirent)) {
if(read(fd, &dirent, sizeof dirent) != sizeof dirent) {
printf(1, "ls: read error\n");
continue;
}
pname(dirent.name);
- printf(1, "%d %d %d\n", st.st_type, dirent.inum, st.st_size);
+ printf(1, "%d %d %d\n", st.type, dirent.inum, st.size);
}
}
break;
struct stat {
- int st_dev;
- uint st_ino;
- short st_type;
- short st_nlink;
- uint st_size;
+ int dev;
+ uint ino;
+ short type;
+ short nlink;
+ uint size;
};