Print this page
8115 parallel zfs mount


   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.


  24  */
  25 
  26 #ifndef _SYS_KOBJ_H
  27 #define _SYS_KOBJ_H
  28 
  29 #pragma ident   "%Z%%M% %I%     %E% SMI"
  30 
  31 #include <sys/modctl.h>
  32 #include <sys/elf.h>
  33 #include <sys/machelf.h>
  34 #include <sys/vmem.h>
  35 #include <sys/sdt.h>
  36 #include <sys/bootstat.h>
  37 
  38 #ifdef  __cplusplus
  39 extern "C" {
  40 #endif
  41 
  42 /*
  43  * List of modules maintained by kobj.c
  44  */
  45 struct module_list {
  46         struct module_list *next;
  47         struct module *mp;
  48 };
  49 
  50 typedef unsigned short  symid_t;                /* symbol table index */


 141         int nfree;
 142         int nalloc_calls;
 143         int nfree_calls;
 144 } kobj_stat_t;
 145 
 146 #define kobj_filename(p) ((p)->_name)
 147 #define kobj_linenum(p)  ((p)->_ln)
 148 #define kobj_newline(p)  ((p)->_ln++)
 149 #define kobj_getc(p)    (--(p)->_cnt >= 0 ? ((int)*(p)->_ptr++):kobj_filbuf(p))
 150 #define kobj_ungetc(p)   (++(p)->_cnt > (p)->_size ? -1 : ((int)*(--(p)->_ptr)))
 151 #define kobj_comphdr(p) ((struct comphdr *)(p)->_dbuf)
 152 
 153 /* Offset into buffer */
 154 #define B_OFFSET(file, off)     (off % (file)->_bsize)
 155 
 156 /* Start of page */
 157 #define F_PAGE(file, off)       (off - B_OFFSET(file, off))
 158 
 159 #define F_BLKS(file, size)      ((size / (file)->_bsize) * (file)->_bsize)
 160 
 161 #if defined(_KERNEL)
 162 
 163 extern int kobj_load_module(struct modctl *, int);
 164 extern void kobj_unload_module(struct modctl *);
 165 extern uintptr_t kobj_lookup(struct module *, const char *);
 166 extern Sym *kobj_lookup_all(struct module *, char *, int);
 167 extern int kobj_addrcheck(void *, caddr_t);
 168 extern int kobj_module_to_id(void *);
 169 extern void kobj_getmodinfo(void *, struct modinfo *);
 170 extern int kobj_get_needed(void *, short *, int);
 171 extern uintptr_t kobj_getsymvalue(char *, int);
 172 extern char *kobj_getsymname(uintptr_t, ulong_t *);
 173 extern char *kobj_searchsym(struct module *, uintptr_t, ulong_t *);
 174 
 175 extern int kobj_fstat(intptr_t, struct bootstat *);
 176 extern intptr_t kobj_open(char *);
 177 extern int kobj_path_exists(char *, int);
 178 extern struct _buf *kobj_open_path(char *, int, int);
 179 extern int kobj_read(intptr_t, char *, unsigned int, unsigned int);
 180 extern void kobj_close(intptr_t);
 181 extern void *kobj_alloc(size_t, int);


 185 extern void kobj_close_file(struct _buf *);
 186 extern int kobj_read_file(struct _buf *, char *, unsigned, unsigned);
 187 extern int kobj_get_filesize(struct _buf *, uint64_t *size);
 188 extern uintptr_t kobj_getelfsym(char *, void *, int *);
 189 extern void kobj_set_ctf(struct module *, caddr_t data, size_t size);
 190 
 191 extern int kobj_filbuf(struct _buf *);
 192 extern void kobj_sync(void);
 193 #if defined(__i386) || defined(__sparc) || defined(__amd64)
 194 extern void kobj_vmem_init(vmem_t **, vmem_t **);
 195 #else
 196 #error "ISA not supported"
 197 #endif
 198 extern caddr_t kobj_text_alloc(vmem_t *, size_t);
 199 extern caddr_t kobj_texthole_alloc(caddr_t, size_t);
 200 extern void kobj_texthole_free(caddr_t, size_t);
 201 extern void kobj_stat_get(kobj_stat_t *);
 202 extern void kobj_textwin_alloc(struct module *);
 203 extern void kobj_textwin_free(struct module *);
 204 
 205 #endif  /* defined(_KERNEL) */
 206 
 207 #ifdef  __cplusplus
 208 }
 209 #endif
 210 
 211 #endif /* !_SYS_KOBJ_H */


   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  *
  25  * Copyright 2017 RackTop Systems.
  26  */
  27 
  28 #ifndef _SYS_KOBJ_H
  29 #define _SYS_KOBJ_H
  30 


  31 #include <sys/modctl.h>
  32 #include <sys/elf.h>
  33 #include <sys/machelf.h>
  34 #include <sys/vmem.h>
  35 #include <sys/sdt.h>
  36 #include <sys/bootstat.h>
  37 
  38 #ifdef  __cplusplus
  39 extern "C" {
  40 #endif
  41 
  42 /*
  43  * List of modules maintained by kobj.c
  44  */
  45 struct module_list {
  46         struct module_list *next;
  47         struct module *mp;
  48 };
  49 
  50 typedef unsigned short  symid_t;                /* symbol table index */


 141         int nfree;
 142         int nalloc_calls;
 143         int nfree_calls;
 144 } kobj_stat_t;
 145 
 146 #define kobj_filename(p) ((p)->_name)
 147 #define kobj_linenum(p)  ((p)->_ln)
 148 #define kobj_newline(p)  ((p)->_ln++)
 149 #define kobj_getc(p)    (--(p)->_cnt >= 0 ? ((int)*(p)->_ptr++):kobj_filbuf(p))
 150 #define kobj_ungetc(p)   (++(p)->_cnt > (p)->_size ? -1 : ((int)*(--(p)->_ptr)))
 151 #define kobj_comphdr(p) ((struct comphdr *)(p)->_dbuf)
 152 
 153 /* Offset into buffer */
 154 #define B_OFFSET(file, off)     (off % (file)->_bsize)
 155 
 156 /* Start of page */
 157 #define F_PAGE(file, off)       (off - B_OFFSET(file, off))
 158 
 159 #define F_BLKS(file, size)      ((size / (file)->_bsize) * (file)->_bsize)
 160 
 161 #if defined(_KERNEL) || defined(_FAKE_KERNEL)
 162 
 163 extern int kobj_load_module(struct modctl *, int);
 164 extern void kobj_unload_module(struct modctl *);
 165 extern uintptr_t kobj_lookup(struct module *, const char *);
 166 extern Sym *kobj_lookup_all(struct module *, char *, int);
 167 extern int kobj_addrcheck(void *, caddr_t);
 168 extern int kobj_module_to_id(void *);
 169 extern void kobj_getmodinfo(void *, struct modinfo *);
 170 extern int kobj_get_needed(void *, short *, int);
 171 extern uintptr_t kobj_getsymvalue(char *, int);
 172 extern char *kobj_getsymname(uintptr_t, ulong_t *);
 173 extern char *kobj_searchsym(struct module *, uintptr_t, ulong_t *);
 174 
 175 extern int kobj_fstat(intptr_t, struct bootstat *);
 176 extern intptr_t kobj_open(char *);
 177 extern int kobj_path_exists(char *, int);
 178 extern struct _buf *kobj_open_path(char *, int, int);
 179 extern int kobj_read(intptr_t, char *, unsigned int, unsigned int);
 180 extern void kobj_close(intptr_t);
 181 extern void *kobj_alloc(size_t, int);


 185 extern void kobj_close_file(struct _buf *);
 186 extern int kobj_read_file(struct _buf *, char *, unsigned, unsigned);
 187 extern int kobj_get_filesize(struct _buf *, uint64_t *size);
 188 extern uintptr_t kobj_getelfsym(char *, void *, int *);
 189 extern void kobj_set_ctf(struct module *, caddr_t data, size_t size);
 190 
 191 extern int kobj_filbuf(struct _buf *);
 192 extern void kobj_sync(void);
 193 #if defined(__i386) || defined(__sparc) || defined(__amd64)
 194 extern void kobj_vmem_init(vmem_t **, vmem_t **);
 195 #else
 196 #error "ISA not supported"
 197 #endif
 198 extern caddr_t kobj_text_alloc(vmem_t *, size_t);
 199 extern caddr_t kobj_texthole_alloc(caddr_t, size_t);
 200 extern void kobj_texthole_free(caddr_t, size_t);
 201 extern void kobj_stat_get(kobj_stat_t *);
 202 extern void kobj_textwin_alloc(struct module *);
 203 extern void kobj_textwin_free(struct module *);
 204 
 205 #endif  /* defined(_KERNEL) || defined(_FAKE_KERNEL) */
 206 
 207 #ifdef  __cplusplus
 208 }
 209 #endif
 210 
 211 #endif /* !_SYS_KOBJ_H */