Changeset 927a181e in mainline


Ignore:
Timestamp:
2012-12-04T02:17:04Z (11 years ago)
Author:
Adam Hraska <adam.hraska+hos@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cb10bc9
Parents:
21b703f
Message:

Turned futex_t in uspace into an opaque type.

Location:
uspace/lib/c
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/async.c

    r21b703f r927a181e  
    166166
    167167/** Async framework global futex */
    168 atomic_t async_futex = FUTEX_INITIALIZER;
     168futex_t async_futex = FUTEX_INITIALIZER;
    169169
    170170/** Number of threads waiting for IPC in the kernel. */
  • uspace/lib/c/generic/fibril.c

    r21b703f r927a181e  
    4949#include <assert.h>
    5050#include <async.h>
     51#include <futex.h>
    5152
    5253/**
     
    5455 * serialized_list and manager_list.
    5556 */
    56 static atomic_t fibril_futex = FUTEX_INITIALIZER;
     57static futex_t fibril_futex = FUTEX_INITIALIZER;
    5758
    5859static LIST_INITIALIZE(ready_list);
  • uspace/lib/c/generic/futex.c

    r21b703f r927a181e  
    4646void futex_initialize(futex_t *futex, int val)
    4747{
    48         atomic_set(futex, val);
     48        atomic_set(&futex->val, val);
    4949}
    5050
     
    5959int futex_trydown(futex_t *futex)
    6060{
    61         return cas(futex, 1, 0);
     61        return cas(&futex->val, 1, 0);
    6262}
    6363
     
    7373int futex_down(futex_t *futex)
    7474{
    75         if ((atomic_signed_t) atomic_predec(futex) < 0)
    76                 return __SYSCALL1(SYS_FUTEX_SLEEP, (sysarg_t) &futex->count);
     75        if ((atomic_signed_t) atomic_predec(&futex->val) < 0)
     76                return __SYSCALL1(SYS_FUTEX_SLEEP, (sysarg_t) &futex->val.count);
    7777       
    7878        return 0;
     
    8989int futex_up(futex_t *futex)
    9090{
    91         if ((atomic_signed_t) atomic_postinc(futex) < 0)
    92                 return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->count);
     91        if ((atomic_signed_t) atomic_postinc(&futex->val) < 0)
     92                return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->val.count);
    9393       
    9494        return 0;
  • uspace/lib/c/generic/ipc.c

    r21b703f r927a181e  
    8181LIST_INITIALIZE(queued_calls);
    8282
    83 static atomic_t ipc_futex = FUTEX_INITIALIZER;
     83static futex_t ipc_futex = FUTEX_INITIALIZER;
    8484
    8585/** Send asynchronous message via syscall.
  • uspace/lib/c/include/futex.h

    r21b703f r927a181e  
    3939#include <sys/types.h>
    4040
    41 #define FUTEX_INITIALIZER  {1}
     41#define FUTEX_INITIALIZER  {{1}}
    4242
    43 typedef atomic_t futex_t;
     43typedef struct futex {
     44        atomic_t val;
     45} futex_t;
    4446
    4547extern void futex_initialize(futex_t *futex, int value);
  • uspace/lib/c/include/ipc/common.h

    r21b703f r927a181e  
    4040#include <atomic.h>
    4141#include <task.h>
     42#include <futex.h>
    4243
    4344#define IPC_FLAG_BLOCKING  0x01
     
    5152typedef sysarg_t ipc_callid_t;
    5253
    53 extern atomic_t async_futex;
     54extern futex_t async_futex;
    5455
    5556#endif
Note: See TracChangeset for help on using the changeset viewer.