Author: dchagin
Date: Sat Mar 26 19:15:23 2016
New Revision: 297296
URL: https://svnweb.freebsd.org/changeset/base/297296

Log:
  Implement O_NONBLOCK flag via fcntl(F_SETFL) for eventfd object.
  
  MFC after:    1 week

Modified:
  head/sys/compat/linux/linux_event.c

Modified: head/sys/compat/linux/linux_event.c
==============================================================================
--- head/sys/compat/linux/linux_event.c Sat Mar 26 17:49:46 2016        
(r297295)
+++ head/sys/compat/linux/linux_event.c Sat Mar 26 19:15:23 2016        
(r297296)
@@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/user.h>
 #include <sys/file.h>
 #include <sys/filedesc.h>
+#include <sys/filio.h>
 #include <sys/errno.h>
 #include <sys/event.h>
 #include <sys/poll.h>
@@ -871,8 +872,24 @@ static int
 eventfd_ioctl(struct file *fp, u_long cmd, void *data,
        struct ucred *active_cred, struct thread *td)
 {
+       struct eventfd *efd;
 
-       return (ENXIO);
+       efd = fp->f_data;
+       if (fp->f_type != DTYPE_LINUXEFD || efd == NULL)
+               return (EINVAL);
+
+       switch (cmd)
+       {
+       case FIONBIO:
+               if (*(int *)data)
+                       efd->efd_flags |= LINUX_O_NONBLOCK;
+               else
+                       efd->efd_flags &= ~LINUX_O_NONBLOCK;
+       case FIOASYNC:
+               return (0);
+       default:
+               return (ENXIO);
+       }
 }
 
 /*ARGSUSED*/
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to