From: Brian Behlendorf Date: Fri, 11 Jun 2010 21:37:46 +0000 (-0700) Subject: Cleanly split Linux proc.h (fs) from conflicting Solaris proc.h (process) X-Git-Tag: zfs-0.8.0-rc1~152^2~591 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae4c36adce9228eb444c1d5e19f00e83303dbeee;p=zfs Cleanly split Linux proc.h (fs) from conflicting Solaris proc.h (process) Under linux the proc.h header is for the /proc filesystem, and under Solaris the proc/h header if for processes. This patch correctly moves the Linux proc functionality in a linux/proc_compat.h header and leaves the sys/proc.h for use by Solaris. Minor updates were required to all the call sites where it was included of course. --- diff --git a/include/linux/proc_compat.h b/include/linux/proc_compat.h new file mode 100644 index 000000000..c30f9db8e --- /dev/null +++ b/include/linux/proc_compat.h @@ -0,0 +1,47 @@ +/*****************************************************************************\ + * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. + * Copyright (C) 2007 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Brian Behlendorf . + * UCRL-CODE-235197 + * + * This file is part of the SPL, Solaris Porting Layer. + * For details, see . + * + * The SPL is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * The SPL is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with the SPL. If not, see . +\*****************************************************************************/ + +#ifndef _SPL_PROC_H +#define _SPL_PROC_H + +#include + +#ifdef CONFIG_SYSCTL +#ifdef HAVE_2ARGS_REGISTER_SYSCTL +#define spl_register_sysctl_table(t, a) register_sysctl_table(t, a) +#else +#define spl_register_sysctl_table(t, a) register_sysctl_table(t) +#endif /* HAVE_2ARGS_REGISTER_SYSCTL */ +#define spl_unregister_sysctl_table(t) unregister_sysctl_table(t) +#endif /* CONFIG_SYSCTL */ + +extern struct proc_dir_entry *proc_spl_kstat; +struct proc_dir_entry *proc_dir_entry_find(struct proc_dir_entry *root, + const char *str); +int proc_dir_entries(struct proc_dir_entry *root); + +int proc_init(void); +void proc_fini(void); + +#endif /* SPL_PROC_H */ diff --git a/include/sys/kstat.h b/include/sys/kstat.h index 6595f0a8b..42458bee5 100644 --- a/include/sys/kstat.h +++ b/include/sys/kstat.h @@ -26,10 +26,10 @@ #define _SPL_KSTAT_H #include +#include #include #include #include -#include #define KSTAT_STRLEN 31 diff --git a/include/sys/proc.h b/include/sys/proc.h index 64b26bb3f..1c02c676e 100644 --- a/include/sys/proc.h +++ b/include/sys/proc.h @@ -25,33 +25,4 @@ #ifndef _SPL_PROC_H #define _SPL_PROC_H -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef CONFIG_SYSCTL -#ifdef HAVE_2ARGS_REGISTER_SYSCTL -#define spl_register_sysctl_table(t, a) register_sysctl_table(t, a) -#else -#define spl_register_sysctl_table(t, a) register_sysctl_table(t) -#endif /* HAVE_2ARGS_REGISTER_SYSCTL */ -#define spl_unregister_sysctl_table(t) unregister_sysctl_table(t) -#endif /* CONFIG_SYSCTL */ - -extern struct proc_dir_entry *proc_spl_kstat; -struct proc_dir_entry *proc_dir_entry_find(struct proc_dir_entry *root, - const char *str); -int proc_dir_entries(struct proc_dir_entry *root); - -int proc_init(void); -void proc_fini(void); - #endif /* SPL_PROC_H */ diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h index f76c6dd7f..4475431e7 100644 --- a/include/sys/sysmacros.h +++ b/include/sys/sysmacros.h @@ -64,11 +64,12 @@ #define DEV_BSIZE 512 #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ -#define curproc current #define proc_pageout NULL -#define max_ncpus 64 +#define curproc get_current() +#define max_ncpus 64 #define CPU_SEQID smp_processor_id() /* I think... */ #define _NOTE(x) +#define is_system_labeled() 0 #define RLIM64_INFINITY RLIM_INFINITY @@ -131,7 +132,6 @@ extern char spl_version[16]; extern long spl_hostid; extern char hw_serial[11]; -extern int p0; /* Missing misc functions */ extern int highbit(unsigned long i); diff --git a/include/sys/taskq.h b/include/sys/taskq.h index d8578499b..baa96eaa0 100644 --- a/include/sys/taskq.h +++ b/include/sys/taskq.h @@ -94,6 +94,10 @@ void spl_taskq_fini(void); #define taskq_wait(tq) __taskq_wait(tq) #define taskq_dispatch(tq, f, p, fl) __taskq_dispatch(tq, f, p, fl) #define taskq_create(n, th, p, mi, ma, fl) __taskq_create(n, th, p, mi, ma, fl) +#define taskq_create_proc(n, th, p, mi, ma, pr, fl) \ + __taskq_create(n, th, p, mi, ma, fl) +#define taskq_create_sysdc(n, th, mi, ma, pr, dc, fl) \ + __taskq_create(n, th, maxclsyspri, mi, ma, fl) #define taskq_destroy(tq) __taskq_destroy(tq) #endif /* _SPL_TASKQ_H */ diff --git a/include/sys/thread.h b/include/sys/thread.h index 4cad648df..e29715d83 100644 --- a/include/sys/thread.h +++ b/include/sys/thread.h @@ -41,11 +41,6 @@ #define TS_RUN TASK_RUNNING #define TS_ZOMB EXIT_ZOMBIE #define TS_STOPPED TASK_STOPPED -#if 0 -#define TS_FREE 0x00 /* No clean linux mapping */ -#define TS_ONPROC 0x04 /* No clean linux mapping */ -#define TS_WAIT 0x20 /* No clean linux mapping */ -#endif typedef void (*thread_func_t)(void *); @@ -53,13 +48,13 @@ typedef void (*thread_func_t)(void *); __thread_create(stk, stksize, (thread_func_t)func, \ #func, arg, len, pp, state, pri) #define thread_exit() __thread_exit() +#define thread_join(t) SBUG() #define curthread get_current() extern kthread_t *__thread_create(caddr_t stk, size_t stksize, thread_func_t func, const char *name, - void *args, size_t len, int *pp, + void *args, size_t len, proc_t *pp, int state, pri_t pri); extern void __thread_exit(void); #endif /* _SPL_THREAD_H */ - diff --git a/include/sys/types.h b/include/sys/types.h index 498abdff4..1bdd00c48 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -39,6 +39,7 @@ #include #include #include +#include #ifndef HAVE_UINTPTR_T typedef unsigned long uintptr_t; @@ -63,6 +64,7 @@ typedef unsigned long long rlim64_t; typedef long long longlong_t; typedef long long offset_t; typedef struct task_struct kthread_t; +typedef struct task_struct proc_t; typedef struct vmem { } vmem_t; typedef short pri_t; typedef struct timespec timestruc_t; /* definition per SVr4 */ @@ -79,4 +81,6 @@ typedef ulong_t pgcnt_t; typedef long spgcnt_t; typedef short index_t; +extern proc_t p0; + #endif /* _SPL_TYPES_H */ diff --git a/module/spl/spl-debug.c b/module/spl/spl-debug.c index 8ee6c5dfb..6a1086241 100644 --- a/module/spl/spl-debug.c +++ b/module/spl/spl-debug.c @@ -34,8 +34,8 @@ #include #include #include +#include #include -#include #include #include diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c index 9916051de..d5c1523e1 100644 --- a/module/spl/spl-generic.c +++ b/module/spl/spl-generic.c @@ -38,6 +38,7 @@ #include #include #include +#include #ifdef DEBUG_SUBSYSTEM #undef DEBUG_SUBSYSTEM @@ -53,7 +54,7 @@ EXPORT_SYMBOL(spl_hostid); char hw_serial[HW_HOSTID_LEN] = ""; EXPORT_SYMBOL(hw_serial); -int p0 = 0; +proc_t p0 = { 0 }; EXPORT_SYMBOL(p0); #ifndef HAVE_KALLSYMS_LOOKUP_NAME diff --git a/module/spl/spl-kstat.c b/module/spl/spl-kstat.c index 2b45549d6..433f3e5b0 100644 --- a/module/spl/spl-kstat.c +++ b/module/spl/spl-kstat.c @@ -25,6 +25,7 @@ \*****************************************************************************/ #include +#include static spinlock_t kstat_lock; static struct list_head kstat_list; diff --git a/module/spl/spl-proc.c b/module/spl/spl-proc.c index 3bc8b40cf..277a92a7a 100644 --- a/module/spl/spl-proc.c +++ b/module/spl/spl-proc.c @@ -24,7 +24,11 @@ * Solaris Porting Layer (SPL) Proc Implementation. \*****************************************************************************/ -#include +#include +#include +#include +#include +#include #ifdef DEBUG_SUBSYSTEM #undef DEBUG_SUBSYSTEM diff --git a/module/spl/spl-thread.c b/module/spl/spl-thread.c index de959119e..1345890ed 100644 --- a/module/spl/spl-thread.c +++ b/module/spl/spl-thread.c @@ -83,7 +83,7 @@ EXPORT_SYMBOL(__thread_exit); * style callers likely never check for... since it can't fail. */ kthread_t * __thread_create(caddr_t stk, size_t stksize, thread_func_t func, - const char *name, void *args, size_t len, int *pp, + const char *name, void *args, size_t len, proc_t *pp, int state, pri_t pri) { thread_priv_t *tp;