X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Finclude%2Flibcfs%2Fuser-prim.h;h=1752694add2ce68f4c7161265df054547249ff1e;hb=6ea4de1b7f237d331c9e0d66f4cc53365d036e5d;hp=e7231829bb32787acffb98f63bb861ca08eabb3d;hpb=6869932b552ac705f411de3362f01bd50c1f6f7d;p=fs%2Flustre-release.git diff --git a/libcfs/include/libcfs/user-prim.h b/libcfs/include/libcfs/user-prim.h index e723182..1752694 100644 --- a/libcfs/include/libcfs/user-prim.h +++ b/libcfs/include/libcfs/user-prim.h @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -26,8 +24,10 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2012, 2014, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -51,105 +51,146 @@ * liblustre is single-threaded, so most "synchronization" APIs are trivial. */ -#ifndef __KERNEL__ - -typedef struct proc_dir_entry cfs_proc_dir_entry_t; +#ifndef EXPORT_SYMBOL +# define EXPORT_SYMBOL(s) +#endif /* * Just present a single processor until will add thread support. */ #ifndef smp_processor_id -#define smp_processor_id() 0 +# define smp_processor_id() 0 #endif #ifndef num_online_cpus -#define num_online_cpus() 1 +# define num_online_cpus() 1 #endif #ifndef num_possible_cpus -#define num_possible_cpus() 1 +# define num_possible_cpus() 1 +#endif +#ifndef get_cpu +# define get_cpu() 0 +#endif +#ifndef put_cpu +# define put_cpu() do {} while (0) +#endif +#ifndef NR_CPUS +# define NR_CPUS 1 +#endif +#ifndef for_each_possible_cpu +# define for_each_possible_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) #endif /* - * Wait Queue. + * Wait Queue. */ typedef struct cfs_waitlink { - struct list_head sleeping; - void *process; -} cfs_waitlink_t; + struct list_head sleeping; + void *process; +} wait_queue_t; typedef struct cfs_waitq { - struct list_head sleepers; -} cfs_waitq_t; - -/* XXX: need to replace wake_up with cfs_waitq_signal() */ -#define wake_up(q) cfs_waitq_signal(q) + struct list_head sleepers; +} wait_queue_head_t; + +#define CFS_DECL_WAITQ(wq) wait_queue_head_t wq +void init_waitqueue_head(struct cfs_waitq *waitq); +void init_waitqueue_entry_current(struct cfs_waitlink *link); +void add_wait_queue(struct cfs_waitq *waitq, struct cfs_waitlink *link); +void add_wait_queue_exclusive(struct cfs_waitq *waitq, struct cfs_waitlink *link); +void add_wait_queue_exclusive_head(struct cfs_waitq *waitq, struct cfs_waitlink *link); +void remove_wait_queue(struct cfs_waitq *waitq, struct cfs_waitlink *link); +int waitqueue_active(struct cfs_waitq *waitq); +void wake_up(struct cfs_waitq *waitq); +void wake_up_nr(struct cfs_waitq *waitq, int nr); +void wake_up_all(struct cfs_waitq *waitq); +void waitq_wait(struct cfs_waitlink *link, long state); +int64_t waitq_timedwait(struct cfs_waitlink *link, long state, int64_t timeout); +void schedule_timeout_and_set_state(long state, int64_t timeout); +void cfs_pause(cfs_duration_t d); +int need_resched(void); +void cond_resched(void); /* * Task states */ -typedef long cfs_task_state_t; - -#define CFS_TASK_INTERRUPTIBLE (0) -#define CFS_TASK_UNINT (1) -#define CFS_TASK_RUNNING (2) +#define TASK_INTERRUPTIBLE (0) +#define TASK_UNINTERRUPTIBLE (1) +#define TASK_RUNNING (2) +static inline void schedule(void) {} +static inline void schedule_timeout(int64_t t) {} +static inline void set_current_state(int state) +{ +} -/* +/* * Lproc */ -typedef int (cfs_read_proc_t)(char *page, char **start, off_t off, - int count, int *eof, void *data); +typedef int (read_proc_t)(char *page, char **start, off_t off, + int count, int *eof, void *data); struct file; /* forward ref */ -typedef int (cfs_write_proc_t)(struct file *file, const char *buffer, +typedef int (write_proc_t)(struct file *file, const char *buffer, unsigned long count, void *data); /* * Signal */ -typedef sigset_t cfs_sigset_t; /* * Timer */ -#include -typedef struct { - struct list_head tl_list; - void (*function)(unsigned long unused); - unsigned long data; - long expires; -} cfs_timer_t; +struct timer_list { + struct list_head tl_list; + void (*function)(ulong_ptr_t unused); + ulong_ptr_t data; + long expires; +}; #define in_interrupt() (0) -typedef void cfs_psdev_t; +struct miscdevice{ +}; -static inline int cfs_psdev_register(cfs_psdev_t *foo) +static inline int misc_register(struct miscdevice *foo) { - return 0; + return 0; } -static inline int cfs_psdev_deregister(cfs_psdev_t *foo) +static inline int misc_deregister(struct miscdevice *foo) { - return 0; + return 0; } -#define cfs_lock_kernel() do {} while (0) -#define cfs_sigfillset(l) do {} while (0) #define cfs_recalc_sigpending(l) do {} while (0) -#define cfs_kernel_thread(l,m,n) LBUG() + +#define DAEMON_FLAGS 0 + +#define L1_CACHE_ALIGN(x) (x) #ifdef HAVE_LIBPTHREAD typedef int (*cfs_thread_t)(void *); -int cfs_create_thread(cfs_thread_t func, void *arg); +void *kthread_run(cfs_thread_t func, void *arg, const char namefmt[], ...); #else -#define cfs_create_thread(l,m) LBUG() +/* Fine, crash, but stop giving me compile warnings */ +#define kthread_run(f, a, n, ...) LBUG() +#endif + +uid_t current_uid(void); +gid_t current_gid(void); +uid_t current_fsuid(void); +gid_t current_fsgid(void); + +#ifndef HAVE_STRLCPY /* not in glibc for RHEL 5.x, remove when obsolete */ +size_t strlcpy(char *tgt, const char *src, size_t tgt_len); #endif -int cfs_parse_int_tunable(int *value, char *name); -uid_t cfs_curproc_uid(void); +#ifndef HAVE_STRLCAT /* not in glibc for RHEL 5.x, remove when obsolete */ +size_t strlcat(char *tgt, const char *src, size_t tgt_len); +#endif #define LIBCFS_REALLOC(ptr, size) realloc(ptr, size) @@ -169,6 +210,7 @@ struct cfs_stack_trace { /* * arithmetic */ +#ifndef do_div /* gcc only, platform-specific will override */ #define do_div(a,b) \ ({ \ unsigned long remainder;\ @@ -176,18 +218,21 @@ struct cfs_stack_trace { (a) = (a) / (b); \ (remainder); \ }) - -/* !__KERNEL__ */ #endif -/* __LIBCFS_USER_PRIM_H__ */ -#endif /* - * Local variables: - * c-indentation-style: "K&R" - * c-basic-offset: 8 - * tab-width: 8 - * fill-column: 80 - * scroll-step: 1 - * End: + * Groups */ +struct group_info{ }; + +#ifndef min +# define min(x,y) ((x)<(y) ? (x) : (y)) +#endif + +#ifndef max +# define max(x,y) ((x)>(y) ? (x) : (y)) +#endif + +#define get_random_bytes(val, size) (*val) = 0 + +#endif /* __LIBCFS_USER_PRIM_H__ */