Subversion Repositories HelenOS

Rev

Rev 2071 | Rev 2089 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2071 Rev 2085
Line 40... Line 40...
40
#include <synch/waitq.h>
40
#include <synch/waitq.h>
41
#include <genarch/mm/page_ht.h>
41
#include <genarch/mm/page_ht.h>
42
#include <genarch/mm/page_pt.h>
42
#include <genarch/mm/page_pt.h>
43
 
43
 
44
/** Kernel-side futex structure. */
44
/** Kernel-side futex structure. */
45
struct futex {
45
typedef struct {
46
    uintptr_t paddr;    /**< Physical address of the status variable. */
46
    uintptr_t paddr;    /**< Physical address of the status variable. */
47
    waitq_t wq;     /**< Wait queue for threads waiting for futex availability. */
47
    waitq_t wq;     /**< Wait queue for threads waiting for futex availability. */
48
    link_t ht_link;     /**< Futex hash table link. */
48
    link_t ht_link;     /**< Futex hash table link. */
49
    count_t refcount;   /**< Number of tasks that reference this futex. */
49
    count_t refcount;   /**< Number of tasks that reference this futex. */
50
};
50
} futex_t;
51
 
51
 
52
extern void futex_init(void);
52
extern void futex_init(void);
53
extern unative_t sys_futex_sleep_timeout(uintptr_t uaddr, uint32_t usec, int flags);
53
extern unative_t sys_futex_sleep_timeout(uintptr_t uaddr, uint32_t usec, int flags);
54
extern unative_t sys_futex_wakeup(uintptr_t uaddr);
54
extern unative_t sys_futex_wakeup(uintptr_t uaddr);
55
 
55