| 40 | }; |
| 41 | |
| 42 | void* signaller(void* void_arg) { |
| 43 | SignalArg arg = *(SignalArg*)void_arg; |
| 44 | bthread_usleep(arg.sleep_us_before_fight); |
| 45 | void* data = NULL; |
| 46 | int rc = bthread_id_trylock(arg.id, &data); |
| 47 | if (rc == 0) { |
| 48 | EXPECT_EQ(0xdead, *(int*)data); |
| 49 | ++*(int*)data; |
| 50 | //EXPECT_EQ(EBUSY, bthread_id_destroy(arg.id, ECANCELED)); |
| 51 | bthread_usleep(arg.sleep_us_before_signal); |
| 52 | EXPECT_EQ(0, bthread_id_unlock_and_destroy(arg.id)); |
| 53 | return void_arg; |
| 54 | } else { |
| 55 | EXPECT_TRUE(EBUSY == rc || EINVAL == rc); |
| 56 | return NULL; |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | TEST(BthreadIdTest, join_after_destroy) { |
| 61 | bthread_id_t id1; |
nothing calls this directly
no test coverage detected