threads: correct 'thrd_yield()'
authorBrian Norris <banorris@uci.edu>
Wed, 10 Oct 2012 18:41:38 +0000 (11:41 -0700)
committerBrian Norris <banorris@uci.edu>
Wed, 10 Oct 2012 18:41:38 +0000 (11:41 -0700)
The C11 thrd_yield() interface should return void. Also, it doesn't need
to do anything in our model-checker for now. I'm leaving its
implementation commented out for now, in case we find it helps for
fairness, for instance. Note that I made its location parameter non-NULL
now, too, so that we can identify the Thread, if we ever use it.

include/threads.h
libthreads.cc

index 641b0cf010927919f349d177110abb7871cf8715..d1ff1929aba37840d9cab9f5b5bf087639057550 100644 (file)
@@ -15,7 +15,7 @@ extern "C" {
 
        int thrd_create(thrd_t *t, thrd_start_t start_routine, void *arg);
        int thrd_join(thrd_t);
-       int thrd_yield(void);
+       void thrd_yield(void);
        thrd_t thrd_current(void);
 
        int user_main(int, char**);
index 2b2bf85ac374b2a57ab85b2ddfb82f184c6372ea..05cca8646a3daf69db7c2992e70e540c893dccf2 100644 (file)
@@ -27,10 +27,10 @@ int thrd_join(thrd_t t)
        return 0;
 }
 
-int thrd_yield(void)
+/** A no-op, for now */
+void thrd_yield(void)
 {
-       /* seq_cst is just a 'don't care' parameter */
-       return model->switch_to_master(new ModelAction(THREAD_YIELD, std::memory_order_seq_cst, NULL, VALUE_NONE));
+       //model->switch_to_master(new ModelAction(THREAD_YIELD, std::memory_order_seq_cst, thread_current(), VALUE_NONE));
 }
 
 thrd_t thrd_current(void)