Exemplo n.º 1
0
static int posix_clock_fasync(int fd, struct file *fp, int on)
{
    struct posix_clock *clk = get_posix_clock(fp);
    int err = 0;

    if (!clk)
        return -ENODEV;

    if (clk->ops.fasync)
        err = clk->ops.fasync(clk, fd, fp, on);

    put_posix_clock(clk);

    return err;
}
Exemplo n.º 2
0
static int posix_clock_mmap(struct file *fp, struct vm_area_struct *vma)
{
    struct posix_clock *clk = get_posix_clock(fp);
    int err = -ENODEV;

    if (!clk)
        return -ENODEV;

    if (clk->ops.mmap)
        err = clk->ops.mmap(clk, vma);

    put_posix_clock(clk);

    return err;
}
Exemplo n.º 3
0
static unsigned int posix_clock_poll(struct file *fp, poll_table *wait)
{
    struct posix_clock *clk = get_posix_clock(fp);
    int result = 0;

    if (!clk)
        return -ENODEV;

    if (clk->ops.poll)
        result = clk->ops.poll(clk, fp, wait);

    put_posix_clock(clk);

    return result;
}
Exemplo n.º 4
0
static __poll_t posix_clock_poll(struct file *fp, poll_table *wait)
{
	struct posix_clock *clk = get_posix_clock(fp);
	__poll_t result = 0;

	if (!clk)
		return EPOLLERR;

	if (clk->ops.poll)
		result = clk->ops.poll(clk, fp, wait);

	put_posix_clock(clk);

	return result;
}
Exemplo n.º 5
0
static ssize_t posix_clock_read(struct file *fp, char __user *buf,
                                size_t count, loff_t *ppos)
{
    struct posix_clock *clk = get_posix_clock(fp);
    int err = -EINVAL;

    if (!clk)
        return -ENODEV;

    if (clk->ops.read)
        err = clk->ops.read(clk, fp->f_flags, buf, count);

    put_posix_clock(clk);

    return err;
}
Exemplo n.º 6
0
static long posix_clock_compat_ioctl(struct file *fp,
                                     unsigned int cmd, unsigned long arg)
{
    struct posix_clock *clk = get_posix_clock(fp);
    int err = -ENOTTY;

    if (!clk)
        return -ENODEV;

    if (clk->ops.ioctl)
        err = clk->ops.ioctl(clk, cmd, arg);

    put_posix_clock(clk);

    return err;
}
Exemplo n.º 7
0
static int get_clock_desc(const clockid_t id, struct posix_clock_desc *cd)
{
    struct file *fp = fget(CLOCKID_TO_FD(id));
    int err = -EINVAL;

    if (!fp)
        return err;

    if (fp->f_op->open != posix_clock_open || !fp->private_data)
        goto out;

    cd->fp = fp;
    cd->clk = get_posix_clock(fp);

    err = cd->clk ? 0 : -ENODEV;
out:
    if (err)
        fput(fp);
    return err;
}