Skip to content

Commit

Permalink
ntsync: Introduce NTSYNC_IOC_EVENT_READ.
Browse files Browse the repository at this point in the history
This corresponds to the NT syscall NtQueryEvent().

This returns the signaled state of the event and whether it is manual-reset.

Signed-off-by: Elizabeth Figura <[email protected]>
Signed-off-by: Alexandre Frade <[email protected]>
  • Loading branch information
Elizabeth Figura authored and xanmod committed Sep 16, 2024
1 parent 22d9945 commit ec13d9b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
26 changes: 26 additions & 0 deletions drivers/misc/ntsync.c
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,30 @@ static int ntsync_mutex_read(struct ntsync_obj *mutex, void __user *argp)
return ret;
}

static int ntsync_event_read(struct ntsync_obj *event, void __user *argp)
{
struct ntsync_event_args __user *user_args = argp;
struct ntsync_device *dev = event->dev;
struct ntsync_event_args args;
bool all;

if (event->type != NTSYNC_TYPE_EVENT)
return -EINVAL;

args.event = 0;

all = ntsync_lock_obj(dev, event);

args.manual = event->u.event.manual;
args.signaled = event->u.event.signaled;

ntsync_unlock_obj(dev, event, all);

if (copy_to_user(user_args, &args, sizeof(args)))
return -EFAULT;
return 0;
}

static int ntsync_obj_release(struct inode *inode, struct file *file)
{
struct ntsync_obj *obj = file->private_data;
Expand Down Expand Up @@ -666,6 +690,8 @@ static long ntsync_obj_ioctl(struct file *file, unsigned int cmd,
return ntsync_event_reset(obj, argp);
case NTSYNC_IOC_EVENT_PULSE:
return ntsync_event_set(obj, argp, true);
case NTSYNC_IOC_EVENT_READ:
return ntsync_event_read(obj, argp);
default:
return -ENOIOCTLCMD;
}
Expand Down
1 change: 1 addition & 0 deletions include/uapi/linux/ntsync.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,6 @@ struct ntsync_wait_args {
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
#define NTSYNC_IOC_MUTEX_READ _IOR ('N', 0x8c, struct ntsync_mutex_args)
#define NTSYNC_IOC_EVENT_READ _IOR ('N', 0x8d, struct ntsync_event_args)

#endif

0 comments on commit ec13d9b

Please sign in to comment.