Exemple #1
0
static ssize_t file_read(struct file *file, char __user * buffer, size_t count,
                         loff_t * ppos)
{
    int minor = iminor(file->f_path.dentry->d_inode);

    /* data available? */
    if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1)) {
        return 0;	// -EAGAIN makes cat whinge
    }

    return rtlx_read(minor, buffer, count);
}
Exemple #2
0
static ssize_t file_read(struct file *file, char __user * buffer, size_t count,
			 loff_t * ppos)
{
	int minor = iminor(file->f_path.dentry->d_inode);

	
	if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1)) {
		return 0;	
	}

	return rtlx_read(minor, buffer, count);
}
Exemple #3
0
static unsigned int file_poll(struct file *file, poll_table * wait)
{
	int minor = iminor(file_inode(file));
	unsigned int mask = 0;

	poll_wait(file, &channel_wqs[minor].rt_queue, wait);
	poll_wait(file, &channel_wqs[minor].lx_queue, wait);

	if (rtlx == NULL)
		return 0;

	/* data available to read? */
	if (rtlx_read_poll(minor, 0))
		mask |= POLLIN | POLLRDNORM;

	/* space to write */
	if (rtlx_write_poll(minor))
		mask |= POLLOUT | POLLWRNORM;

	return mask;
}
Exemple #4
0
static unsigned int file_poll(struct file *file, poll_table * wait)
{
	int minor;
	unsigned int mask = 0;

	minor = iminor(file->f_path.dentry->d_inode);

	poll_wait(file, &channel_wqs[minor].rt_queue, wait);
	poll_wait(file, &channel_wqs[minor].lx_queue, wait);

	if (rtlx == NULL)
		return 0;

	
	if (rtlx_read_poll(minor, 0))
		mask |= POLLIN | POLLRDNORM;

	
	if (rtlx_write_poll(minor))
		mask |= POLLOUT | POLLWRNORM;

	return mask;
}