- 论坛徽章:
- 0
|
本帖最后由 lmarsin 于 2010-07-14 15:43 编辑
回复 18# Godbach
这种情况没有测试。
对于你上面发生的问题,可以在write_msg函数中,注释掉
local_irq_save(flags);
local_irq_restore(flags);
之后测试下看看
static void write_msg(struct console *con, const char *msg, unsigned int len)
{
#if USE_SYS_CALL
unsigned long flags;
mm_segment_t old_fs;
old_fs = get_fs();
set_fs(KERNEL_DS);
sys_write(np.pty_fd, msg, len);
set_fs(old_fs);
#else
unsigned long flags;
ssize_t ret = -EBADF;
mm_segment_t old_fs;
if (np.pty_file) {
old_fs = get_fs();
set_fs(KERNEL_DS);
loff_t pos = np.pty_file->f_pos;
ret = vfs_write(np.pty_file, msg, len, &pos);
np.pty_file->f_pos = pos;
set_fs(old_fs);
}
#endif
} |
|