/shark/trunk/drivers/linuxc26/include/linux/completion.h |
---|
21,12 → 21,7 |
#define DECLARE_COMPLETION(work) \ |
struct completion work = COMPLETION_INITIALIZER(work) |
static inline void init_completion(struct completion *x) |
{ |
x->done = 0; |
init_waitqueue_head(&x->wait); |
} |
extern void init_completion(struct completion *x); |
extern void FASTCALL(wait_for_completion(struct completion *)); |
extern void FASTCALL(complete(struct completion *)); |
extern void FASTCALL(complete_all(struct completion *)); |
/shark/trunk/drivers/linuxc26/include/linux/wait.h |
---|
54,40 → 54,20 |
#define DECLARE_WAIT_QUEUE_HEAD(name) \ |
wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name) |
static inline void init_waitqueue_head(wait_queue_head_t *q) |
{ |
q->lock = SPIN_LOCK_UNLOCKED; |
INIT_LIST_HEAD(&q->task_list); |
} |
extern void init_waitqueue_head(wait_queue_head_t *q); |
static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) |
{ |
q->flags = 0; |
q->task = p; |
q->func = default_wake_function; |
} |
extern void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p); |
static inline void init_waitqueue_func_entry(wait_queue_t *q, |
wait_queue_func_t func) |
{ |
q->flags = 0; |
q->task = NULL; |
q->func = func; |
} |
extern void init_waitqueue_func_entry(wait_queue_t *q, |
wait_queue_func_t func); |
static inline int waitqueue_active(wait_queue_head_t *q) |
{ |
return !list_empty(&q->task_list); |
} |
extern int waitqueue_active(wait_queue_head_t *q); |
extern void FASTCALL(add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); |
extern void FASTCALL(add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)); |
extern void FASTCALL(remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); |
static inline void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new) |
{ |
list_add(&new->task_list, &head->task_list); |
} |
extern void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new); |
/* |
* Used for wake-one threads: |
/shark/trunk/drivers/linuxc26/include/asm/uaccess.h |
---|
371,9 → 371,20 |
: "m"(__m(addr)), "i"(errret), "0"(err)) |
unsigned long __copy_to_user_ll(void __user *to, const void *from, unsigned long n); |
unsigned long __copy_from_user_ll(void *to, const void __user *from, unsigned long n); |
static inline unsigned long __copy_to_user_ll(void __user *to, const void *from, unsigned long n) { |
memcpy(to,from,n); |
return 0; |
} |
static inline unsigned long __copy_from_user_ll(void *to, const void __user *from, unsigned long n) { |
memcpy(to,from,n); |
return 0; |
} |
/* |
* Here we special-case 1, 2 and 4-byte copy_*_user invocations. On a fault |
* we return the initial request size (1, 2 or 4), as copy_*_user should do. |
398,22 → 409,10 |
static inline unsigned long |
__copy_to_user(void __user *to, const void *from, unsigned long n) |
{ |
if (__builtin_constant_p(n)) { |
unsigned long ret; |
switch (n) { |
case 1: |
__put_user_size(*(u8 *)from, (u8 *)to, 1, ret, 1); |
return ret; |
case 2: |
__put_user_size(*(u16 *)from, (u16 *)to, 2, ret, 2); |
return ret; |
case 4: |
__put_user_size(*(u32 *)from, (u32 *)to, 4, ret, 4); |
return ret; |
} |
} |
return __copy_to_user_ll(to, from, n); |
memcpy(to,from,n); |
return 0; |
} |
/** |
/shark/trunk/drivers/linuxc26/include/linuxcomp.h |
---|
28,4 → 28,8 |
#define __HAVE_ARCH_MEMCMP |
#define __HAVE_ARCH_MEMCHR |
void shark_internal_sem_create(void **sem, int init); |
void shark_internal_sem_wait(void *sem); |
void shark_internal_sem_post(void *sem); |
#endif |
/shark/trunk/drivers/linuxc26/shark_glue.c |
---|
0,0 → 1,21 |
#include <kernel/int_sem.h> |
#include <stdlib.h> |
void shark_internal_sem_create(void **sem, int init) { |
*sem = (void *)malloc(sizeof(internal_sem_t)); |
internal_sem_init((internal_sem_t *)(*sem),init); |
} |
void shark_internal_sem_wait(void *sem) { |
internal_sem_wait((internal_sem_t *)(sem)); |
} |
void shark_internal_sem_post(void *sem) { |
internal_sem_post((internal_sem_t *)(sem)); |
} |
/shark/trunk/drivers/linuxc26/core.c |
---|
371,7 → 371,7 |
void device_unregister_wait(struct device * dev) |
{ |
struct completion c; |
init_completion(&c); |
//init_completion(&c); |
dev->complete = &c; |
device_unregister(dev); |
//wait_for_completion(&c); |
/shark/trunk/drivers/linuxc26/makefile |
---|
11,7 → 11,7 |
OBJS_PATH = $(BASE)/drivers/linuxc26 |
OBJS = bus.o linuxcomp.o core.o driver.o vsprintf.o interface.o kobject.o\ |
shark_linuxc26.o class.o |
shark_linuxc26.o shark_glue.o class.o |
C_OPT += -I../linuxc26/include |