X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Finclude%2Flibcfs%2Fuser-prim.h;h=eb5bb5a3132a6bd923748ad2834454311d2e5da4;hb=2bcfce77a2712960fadac2f034c1df4826780608;hp=a5c4213421c07fedd33fb5076b75457c8d467479;hpb=3b4c006b28c9d6a7c3b00535cd3a6292178fa4c6;p=fs%2Flustre-release.git diff --git a/libcfs/include/libcfs/user-prim.h b/libcfs/include/libcfs/user-prim.h index a5c4213..eb5bb5a 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,104 +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 */ -typedef struct { - struct list_head tl_list; - void (*function)(ulong_ptr_t unused); - ulong_ptr_t 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 cfs_kthread_run(fn,d,fmt,...) 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 cfs_curproc_uid(void); +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 + +#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) @@ -178,6 +220,11 @@ struct cfs_stack_trace { }) #endif +/* + * Groups + */ +struct group_info{ }; + #ifndef min # define min(x,y) ((x)<(y) ? (x) : (y)) #endif @@ -186,44 +233,13 @@ struct cfs_stack_trace { # define max(x,y) ((x)>(y) ? (x) : (y)) #endif +#define get_random_bytes(val, size) (*val) = 0 + /* utility libcfs init/fini entries */ -#ifdef __WINNT__ -extern int libcfs_arch_init(void); -extern void libcfs_arch_cleanup(void); -#else /* !__WINNT__ */ static inline int libcfs_arch_init(void) { return 0; } static inline void libcfs_arch_cleanup(void) { } -/* __WINNT__ */ -#endif -/* proc interface wrappers for non-win OS */ -#ifndef __WINNT__ -#define cfs_proc_open open -#define cfs_proc_mknod mknod -#define cfs_proc_ioctl ioctl -#define cfs_proc_close close -#define cfs_proc_read read -#define cfs_proc_write write -#define cfs_proc_fopen fopen -#define cfs_proc_fclose fclose -#define cfs_proc_fgets fgets -/* !__WINNT__ */ -#endif - -/* !__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: - */ +#endif /* __LIBCFS_USER_PRIM_H__ */