Lines Matching full:file

8 #include <linux/file.h>
110 static int eventfd_release(struct inode *inode, struct file *file) in eventfd_release() argument
112 struct eventfd_ctx *ctx = file->private_data; in eventfd_release()
119 static unsigned int eventfd_poll(struct file *file, poll_table *wait) in eventfd_poll() argument
121 struct eventfd_ctx *ctx = file->private_data; in eventfd_poll()
125 poll_wait(file, &ctx->wqh, wait); in eventfd_poll()
228 static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count, in eventfd_read() argument
231 struct eventfd_ctx *ctx = file->private_data; in eventfd_read()
237 res = eventfd_ctx_read(ctx, file->f_flags & O_NONBLOCK, &cnt); in eventfd_read()
244 static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count, in eventfd_write() argument
247 struct eventfd_ctx *ctx = file->private_data; in eventfd_write()
262 else if (!(file->f_flags & O_NONBLOCK)) { in eventfd_write()
300 * eventfd_fget - Acquire a reference of an eventfd file descriptor.
301 * @fd: [in] Eventfd file descriptor.
303 * Returns a pointer to the eventfd file structure in case of success, or the
306 * -EBADF : Invalid @fd file descriptor.
307 * -EINVAL : The @fd file descriptor is not an eventfd file.
309 struct file *eventfd_fget(int fd) in eventfd_fget()
311 struct file *file; in eventfd_fget() local
313 file = fget(fd); in eventfd_fget()
314 if (!file) in eventfd_fget()
316 if (file->f_op != &eventfd_fops) { in eventfd_fget()
317 fput(file); in eventfd_fget()
321 return file; in eventfd_fget()
327 * @fd: [in] Eventfd file descriptor.
336 struct file *file; in eventfd_ctx_fdget() local
339 file = eventfd_fget(fd); in eventfd_ctx_fdget()
340 if (IS_ERR(file)) in eventfd_ctx_fdget()
341 return (struct eventfd_ctx *) file; in eventfd_ctx_fdget()
342 ctx = eventfd_ctx_get(file->private_data); in eventfd_ctx_fdget()
343 fput(file); in eventfd_ctx_fdget()
351 * @file: [in] Eventfd file pointer.
356 * -EINVAL : The @fd file descriptor is not an eventfd file.
358 struct eventfd_ctx *eventfd_ctx_fileget(struct file *file) in eventfd_ctx_fileget() argument
360 if (file->f_op != &eventfd_fops) in eventfd_ctx_fileget()
363 return eventfd_ctx_get(file->private_data); in eventfd_ctx_fileget()
368 * eventfd_file_create - Creates an eventfd file pointer.
370 * @flags: Flags for the eventfd file.
372 * This function creates an eventfd file pointer, w/out installing it into
373 * the fd table. This is useful when the eventfd file is used during the
375 * creation. So the eventfd creation is split into the file pointer creation
376 * phase, and the file descriptor installation phase.
377 * In this way races with userspace closing the newly installed file descriptor
379 * Returns an eventfd file pointer, or a proper error pointer.
381 struct file *eventfd_file_create(unsigned int count, int flags) in eventfd_file_create()
383 struct file *file; in eventfd_file_create() local
402 file = anon_inode_getfile("[eventfd]", &eventfd_fops, ctx, in eventfd_file_create()
404 if (IS_ERR(file)) in eventfd_file_create()
407 return file; in eventfd_file_create()
413 struct file *file; in SYSCALL_DEFINE2() local
420 file = eventfd_file_create(count, flags); in SYSCALL_DEFINE2()
421 if (IS_ERR(file)) { in SYSCALL_DEFINE2()
422 error = PTR_ERR(file); in SYSCALL_DEFINE2()
425 fd_install(fd, file); in SYSCALL_DEFINE2()