【发布时间】:2014-12-01 07:18:52
【问题描述】:
对 linux 内核编程完全陌生,想知道为什么我的设备读写时会抛出无限循环:
echo "hi" > simpchar
cat simpchar
static ssize_t device_read(struct file *filp, char *buff,
size_t len, loff_t * off)
{
int bytes_read = 0;
int idxr = 0;
while (len && (msg[idxr] != 0)) {
put_user(msg[idxr], buff++);
len--;
bytes_read++;
idxr++;
}
return bytes_read;
}
static ssize_t device_write(struct file *filp, const char *buff,
size_t len, loff_t * off)
{
int bytes_read = 0;
memset(msg, 0, BUF_LEN);
int idxr = 0;
while (len > 0) {
msg[idxr++] = buff[idxr++];
len--;
bytes_read++;
}
return bytes_read;
}
【问题讨论】:
-
是
simpchar? char dev 是要读还是写?那么命令必须是echo "hi" > simpchar && cat simpchar