[lttng-dev] [RFC PATCH 1/1] check if set_schedaffinity works in configure.ac

Pranith Kumar bobby.prani at gmail.com
Sun Jun 8 16:31:12 EDT 2014


On 06/08/2014 04:18 PM, Pranith Kumar wrote:
> On 06/08/2014 04:15 PM, Pranith Kumar wrote:
>> On some systems set_schedaffinity exists but return "-1" when called. Tests fail in such cases ("test_urcu_hash")
>>
>> Check if we can call set_schedaffinity and define accordingly
> I just realized that this is a common mailing list. This is for userspace-rcu library. I am trying to use it on an Nvidia Tegra K1 device.
>

Oops, the generated files do not work as there is a missing message. Fixed and updated the patch below:

Signed-off-by: Pranith Kumar <bobby.prani at gmail.com>
---
 configure.ac | 39 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 008336c..3df6918 100644
--- a/configure.ac
+++ b/configure.ac
@@ -269,7 +269,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 ])
 
 # First check if the function is available at all.
-AC_CHECK_FUNCS([sched_setaffinity],[
+AC_CHECK_FUNC([sched_setaffinity],[
     # Okay, we have it.  Check if also have cpu_set_t.  If we don't,
     # then we have the first version using unsigned long, and no
     # CPU_ZERO, etc. macros.  If we do have cpu_set_t, we may have the
@@ -295,12 +295,47 @@ AC_CHECK_FUNCS([sched_setaffinity],[
         [sched_set_affinity_args=2])
         AC_DEFINE_UNQUOTED(SCHED_SETAFFINITY_ARGS,
             $sched_set_affinity_args,
-            [Defined to sched_setaffinity's number of arguments.])
+            [Defined to number of arguments taken by sched_setaffinity.])
         AC_MSG_RESULT([$sched_set_affinity_args])
     ],[
         # No cpu_set_t, always 3 args.
         AC_DEFINE(SCHED_SETAFFINITY_ARGS, 3)
     ])
+    AS_IF([test "x$sched_set_affinity_args" = "x3"], [
+        # test if sched_setaffinity works
+        AC_MSG_CHECKING([if sched_setaffinity works])
+        AC_RUN_IFELSE([AC_LANG_SOURCE([[
+                #include <sched.h>
+                int main()
+                {
+                    cpu_set_t foo;
+                    return sched_setaffinity(0, sizeof (foo), &foo);
+                }
+            ]])
+        ],
+        [sched_set_affinity_works=1],
+        [sched_set_affinity_works=0])
+        AC_DEFINE_UNQUOTED(HAVE_SCHED_SETAFFINITY,
+            $sched_set_affinity_works,
+            [Defined if sched_setaffinity works])
+    ],[
+        # test if sched_setaffinity works
+        AC_MSG_CHECKING([if sched_setaffinity works])
+        AC_RUN_IFELSE([AC_LANG_SOURCE([[
+                #include <sched.h>
+                int main()
+                {
+                    cpu_set_t foo;
+                    return sched_setaffinity(0, &foo);
+                }
+            ]])
+        ],
+        [sched_set_affinity_works=1],
+        [sched_set_affinity_works=0])
+        AC_DEFINE_UNQUOTED(HAVE_SCHED_SETAFFINITY,
+            $sched_set_affinity_works,
+            [Defined if sched_setaffinity works])
+    ])
 ])
 
 CFLAGS=$saved_CFLAGS
-- 
1.9.1



More information about the lttng-dev mailing list