X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Fuser-prim.c;h=4c52964f58944f751f5c02f69eb18d1ca3953b9d;hb=f31b79be5a0380df3ed05c16fa43feca2bf5905c;hp=2067c403af5e963df6190d6a2d7db66ed7c61ffa;hpb=70e80ade90af09300396706b8910e196a7928520;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/user-prim.c b/libcfs/libcfs/user-prim.c index 2067c40..4c52964 100644 --- a/libcfs/libcfs/user-prim.c +++ b/libcfs/libcfs/user-prim.c @@ -16,8 +16,8 @@ * in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU General Public License - * version 2 along with this program; If not, see [sun.com URL with a - * copy of GPLv2]. + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or @@ -48,29 +48,8 @@ #include -#include -#ifndef __CYGWIN__ -#include -#ifdef HAVE_ASM_PAGE_H -#include -#endif -#ifdef HAVE_SYS_USER_H -#include -#endif -#else -#include -#endif -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_VFS_H -#include -#endif - /* - * Sleep channel. No-op implementation. + * Wait queue. No-op implementation. */ void cfs_waitq_init(struct cfs_waitq *waitq) @@ -101,14 +80,6 @@ void cfs_waitq_add_exclusive(struct cfs_waitq *waitq, struct cfs_waitlink *link) (void)link; } -void cfs_waitq_forward(struct cfs_waitlink *link, struct cfs_waitq *waitq) -{ - LASSERT(waitq != NULL); - LASSERT(link != NULL); - (void)waitq; - (void)link; -} - void cfs_waitq_del(struct cfs_waitq *waitq, struct cfs_waitlink *link) { LASSERT(waitq != NULL); @@ -142,19 +113,84 @@ void cfs_waitq_broadcast(struct cfs_waitq *waitq) (void)waitq; } -void cfs_waitq_wait(struct cfs_waitlink *link, int state) +void cfs_waitq_wait(struct cfs_waitlink *link, cfs_task_state_t state) { LASSERT(link != NULL); (void)link; } -int64_t cfs_waitq_timedwait(struct cfs_waitlink *link, int state, int64_t timeout) +int64_t cfs_waitq_timedwait(struct cfs_waitlink *link, cfs_task_state_t state, + int64_t timeout) { LASSERT(link != NULL); (void)link; return 0; } +void cfs_schedule_timeout(cfs_task_state_t state, int64_t timeout) +{ + cfs_waitlink_t l; + /* sleep(timeout) here instead? */ + cfs_waitq_timedwait(&l, state, timeout); +} + +void +cfs_pause(cfs_duration_t d) +{ + struct timespec s; + + cfs_duration_nsec(d, &s); + nanosleep(&s, NULL); +} + +int cfs_need_resched(void) +{ + return 0; +} + +void cfs_cond_resched(void) +{ +} + +/* + * Timer + */ + +void cfs_init_timer(cfs_timer_t *t) +{ + CFS_INIT_LIST_HEAD(&t->tl_list); +} + +void cfs_timer_init(cfs_timer_t *l, cfs_timer_func_t *func, void *arg) +{ + CFS_INIT_LIST_HEAD(&l->tl_list); + l->function = func; + l->data = (ulong_ptr_t)arg; + return; +} + +int cfs_timer_is_armed(cfs_timer_t *l) +{ + if (cfs_time_before(cfs_time_current(), l->expires)) + return 1; + else + return 0; +} + +void cfs_timer_arm(cfs_timer_t *l, cfs_time_t deadline) +{ + l->expires = deadline; +} + +void cfs_timer_disarm(cfs_timer_t *l) +{ +} +cfs_time_t cfs_timer_deadline(cfs_timer_t *l) +{ + return l->expires; +} + + #ifdef HAVE_LIBPTHREAD /* @@ -162,7 +198,7 @@ int64_t cfs_waitq_timedwait(struct cfs_waitlink *link, int state, int64_t timeou */ struct lustre_thread_arg { - cfs_thread_t f; + cfs_thread_t f; void *arg; }; static void *cfs_thread_helper(void *data) @@ -172,7 +208,7 @@ static void *cfs_thread_helper(void *data) void *arg = targ->arg; free(targ); - + (void)f(arg); return NULL; } @@ -185,11 +221,11 @@ int cfs_create_thread(cfs_thread_t func, void *arg) if ( targ_p == NULL ) return -ENOMEM; - + targ_p->f = func; targ_p->arg = arg; - pthread_attr_init(&tattr); + pthread_attr_init(&tattr); pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED); rc = pthread_create(&tid, &tattr, cfs_thread_helper, targ_p); pthread_attr_destroy(&tattr); @@ -210,7 +246,7 @@ int cfs_parse_int_tunable(int *value, char *name) if (env == NULL) return 0; - *value = strtoull(env, &end, 0); + *value = (int)strtoull(env, &end, 0); if (*end == 0) return 0; @@ -218,79 +254,6 @@ int cfs_parse_int_tunable(int *value, char *name) return -EINVAL; } -/* - * Allocator - */ - -cfs_page_t *cfs_alloc_page(unsigned int flags) -{ - cfs_page_t *pg = malloc(sizeof(*pg)); - - if (!pg) - return NULL; - pg->addr = malloc(CFS_PAGE_SIZE); - - if (!pg->addr) { - free(pg); - return NULL; - } - return pg; -} - -void cfs_free_page(cfs_page_t *pg) -{ - free(pg->addr); - free(pg); -} - -void *cfs_page_address(cfs_page_t *pg) -{ - return pg->addr; -} - -void *cfs_kmap(cfs_page_t *pg) -{ - return pg->addr; -} - -void cfs_kunmap(cfs_page_t *pg) -{ -} - -/* - * SLAB allocator - */ - -cfs_mem_cache_t * -cfs_mem_cache_create(const char *name, size_t objsize, size_t off, unsigned long flags) -{ - cfs_mem_cache_t *c; - - c = malloc(sizeof(*c)); - if (!c) - return NULL; - c->size = objsize; - CDEBUG(D_MALLOC, "alloc slab cache %s at %p, objsize %d\n", - name, c, (int)objsize); - return c; -} - -int cfs_mem_cache_destroy(cfs_mem_cache_t *c) -{ - CDEBUG(D_MALLOC, "destroy slab cache %p, objsize %u\n", c, c->size); - free(c); - return 0; -} - -void *cfs_mem_cache_alloc(cfs_mem_cache_t *c, int gfp) -{ - return cfs_alloc(c->size, gfp); -} - -void cfs_mem_cache_free(cfs_mem_cache_t *c, void *addr) -{ - cfs_free(addr); -} void cfs_enter_debugger(void) { @@ -326,7 +289,7 @@ cfs_sigset_t cfs_block_sigs(cfs_sigset_t blocks) { cfs_sigset_t old; int rc; - + rc = sigprocmask(SIG_SETMASK, &blocks, &old); LASSERT (rc == 0); @@ -369,12 +332,12 @@ void cfs_clear_sigpending(void) void cfs_stack_trace_fill(struct cfs_stack_trace *trace) { - backtrace(trace->frame, sizeof_array(trace->frame)); + backtrace(trace->frame, ARRAY_SIZE(trace->frame)); } void *cfs_stack_trace_frame(struct cfs_stack_trace *trace, int frame_no) { - if (0 <= frame_no && frame_no < sizeof_array(trace->frame)) + if (0 <= frame_no && frame_no < ARRAY_SIZE(trace->frame)) return trace->frame[frame_no]; else return NULL; @@ -392,7 +355,7 @@ void *cfs_stack_trace_frame(struct cfs_stack_trace *trace, int frame_no) /* __linux__ */ #endif -void lbug_with_loc(char *file, const char *func, const int line) +void lbug_with_loc(const char *file, const char *func, const int line) { /* No libcfs_catastrophe in userspace! */ libcfs_debug_msg(NULL, 0, D_EMERG, file, func, line, "LBUG\n");