svn commit: r319338 - in head/sys/compat/linuxkpi/common: include/linux src

Hans Petter Selasky hselasky at FreeBSD.org
Wed May 31 15:05:45 UTC 2017


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 *


More information about the svn-src-head mailing list