]> granicus.if.org Git - zfs/blobdiff - include/sys/zfs_context.h
Illumos Crypto Port module added to enable native encryption in zfs
[zfs] / include / sys / zfs_context.h
index 56824e84a4ba777bc455fce8e12389398baaece6..7224294c78138663793394aaf921e7aa7f295677 100644 (file)
@@ -62,6 +62,7 @@
 #include <vm/seg_kmem.h>
 #include <sys/zone.h>
 #include <sys/sdt.h>
+#include <sys/kstat.h>
 #include <sys/zfs_debug.h>
 #include <sys/zfs_delay.h>
 #include <sys/fm/fs/zfs.h>
@@ -445,7 +446,9 @@ typedef enum kmem_cbrc {
 /*
  * Task queues
  */
-typedef struct taskq taskq_t;
+
+#define        TASKQ_NAMELEN   31
+
 typedef uintptr_t taskqid_t;
 typedef void (task_func_t)(void *);
 
@@ -457,6 +460,25 @@ typedef struct taskq_ent {
        uintptr_t               tqent_flags;
 } taskq_ent_t;
 
+typedef struct taskq {
+       char            tq_name[TASKQ_NAMELEN + 1];
+       kmutex_t        tq_lock;
+       krwlock_t       tq_threadlock;
+       kcondvar_t      tq_dispatch_cv;
+       kcondvar_t      tq_wait_cv;
+       kthread_t       **tq_threadlist;
+       int             tq_flags;
+       int             tq_active;
+       int             tq_nthreads;
+       int             tq_nalloc;
+       int             tq_minalloc;
+       int             tq_maxalloc;
+       kcondvar_t      tq_maxalloc_cv;
+       int             tq_maxalloc_wait;
+       taskq_ent_t     *tq_freelist;
+       taskq_ent_t     tq_task;
+} taskq_t;
+
 #define        TQENT_FLAG_PREALLOC     0x1     /* taskq_dispatch_ent used */
 
 #define        TASKQ_PREPOPULATE       0x0001
@@ -651,6 +673,8 @@ extern uint64_t physmem;
 
 extern int highbit64(uint64_t i);
 extern int lowbit64(uint64_t i);
+extern int highbit(ulong_t i);
+extern int lowbit(ulong_t i);
 extern int random_get_bytes(uint8_t *ptr, size_t len);
 extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len);
 
@@ -658,6 +682,8 @@ extern void kernel_init(int);
 extern void kernel_fini(void);
 extern void thread_init(void);
 extern void thread_fini(void);
+extern void random_init(void);
+extern void random_fini(void);
 
 struct spa;
 extern void nicenum(uint64_t num, char *buf);