Author: hselasky
Date: Wed May 31 15:05:44 2017
New Revision: 319338
URL: https://svnweb.freebsd.org/changeset/base/319338

Log:
  Implement in_atomic() function in the LinuxKPI.
  
  Obtained from:                kmacy @
  MFC after:            1 week
  Sponsored by:         Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/kthread.h
  head/sys/compat/linuxkpi/common/src/linux_compat.c

Modified: head/sys/compat/linuxkpi/common/include/linux/kthread.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/kthread.h     Wed May 31 
14:59:03 2017        (r319337)
+++ head/sys/compat/linuxkpi/common/include/linux/kthread.h     Wed May 31 
15:05:44 2017        (r319338)
@@ -48,10 +48,15 @@
        __task;                                                         \
 })
 
+#define        in_atomic() ({                          \
+       linux_in_atomic();                      \
+})
+
 extern int kthread_stop(struct task_struct *);
 extern bool kthread_should_stop_task(struct task_struct *);
 extern bool kthread_should_stop(void);
 extern void linux_kthread_fn(void *);
 extern struct task_struct *linux_kthread_setup_and_run(struct thread *, 
linux_task_fn_t *, void *arg);
+extern int linux_in_atomic(void);
 
 #endif /* _LINUX_KTHREAD_H_ */

Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_compat.c  Wed May 31 14:59:03 
2017        (r319337)
+++ head/sys/compat/linuxkpi/common/src/linux_compat.c  Wed May 31 15:05:44 
2017        (r319338)
@@ -73,8 +73,9 @@ __FBSDID("$FreeBSD$");
 #include <linux/timer.h>
 #include <linux/interrupt.h>
 #include <linux/uaccess.h>
-#include <linux/kernel.h>
 #include <linux/list.h>
+#include <linux/kthread.h>
+#include <linux/kernel.h>
 #include <linux/compat.h>
 #include <linux/poll.h>
 #include <linux/smp.h>
@@ -1677,6 +1678,13 @@ linux_on_each_cpu(void callback(void *), void *data)
        smp_rendezvous(smp_no_rendezvous_barrier, callback,
            smp_no_rendezvous_barrier, data);
        return (0);
+}
+
+int
+linux_in_atomic(void)
+{
+
+       return ((curthread->td_pflags & TDP_NOFAULTING) != 0);
 }
 
 struct linux_cdev *
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to