diff options
Diffstat (limited to 'usr/src/uts/common/avs/ns/nsctl.h')
-rw-r--r-- | usr/src/uts/common/avs/ns/nsctl.h | 526 |
1 files changed, 0 insertions, 526 deletions
diff --git a/usr/src/uts/common/avs/ns/nsctl.h b/usr/src/uts/common/avs/ns/nsctl.h deleted file mode 100644 index c91d691684..0000000000 --- a/usr/src/uts/common/avs/ns/nsctl.h +++ /dev/null @@ -1,526 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#ifndef _SYS_NSCTL_H -#define _SYS_NSCTL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#if (defined(lint) || defined(OSDEBUG)) && defined(_KERNEL) -#define __NSC_GEN__ -#include <sys/ksynch.h> -#include <sys/nsctl/nsc_dev.h> -#include <sys/nsctl/nsc_gen.h> -#include <sys/nsctl/nsc_mem.h> -#include <sys/nsctl/nsc_rmspin.h> -#endif - - -/* - * nsctl multi-terabyte volume support - * - * To build a multi-terabyte stack, '#define NSC_MULTI_TERABYTE'. - */ - -#ifdef NSC_MULTI_TERABYTE -typedef uint64_t nsc_off_t; /* positions, offsets */ -typedef uint64_t nsc_size_t; /* lengths, sizes */ -#ifdef _LP64 -#define NSC_SZFMT "lu" -#define NSC_XSZFMT "lx" -#else -#define NSC_SZFMT "llu" -#define NSC_XSZFMT "llx" -#endif - -#else /* max 1TB volume size */ -typedef int nsc_off_t; -typedef int nsc_size_t; -#define NSC_SZFMT "u" -#define NSC_XSZFMT "x" -#endif - - -#ifdef _KERNEL - -#ifdef sun -#include <sys/nsc_ddi.h> -#endif - -/* - * Generic parameter definition. - */ - -typedef struct nsc_def_s { - char *name; /* Parameter name */ - uintptr_t value; /* Parameter value */ - int offset; /* Structure offset */ -} nsc_def_t; - -extern int nsc_inval(), nsc_ioerr(); -extern int nsc_fatal(), nsc_null(), nsc_true(); -extern void nsc_decode_param(nsc_def_t *, nsc_def_t *, long *); -#endif /* _KERNEL */ - - -/* ID and Type flags */ - -#define NSC_ID 0x40000000 /* Module ID */ -#define NSC_NULL 0x00000100 /* No I/O possible */ -#define NSC_DEVICE 0x00000200 /* Device interface */ -#define NSC_FILE 0x00000400 /* File vnode interface */ -#define NSC_CACHE 0x00000800 /* Cache interface */ -#define NSC_ANON 0x00001000 /* Supports anonymous buffers */ -#define NSC_VCHR 0x00002000 /* VCHR vnode device */ -#define NSC_NCALL 0x00004000 /* ncall-io interface */ - -#define NSC_IDS 0x7ff00000 /* ID mask */ -#define NSC_TYPES 0x7fffff00 /* Type mask */ - -#define NSC_MKID(x) (NSC_ID | ((x) << 20)) - -#define NSC_RAW_ID NSC_MKID(39) /* Raw device */ -#define NSC_FILE_ID NSC_MKID(40) /* File vnode device */ -#define NSC_FREEZE_ID NSC_MKID(41) /* Frozen raw device */ -#define NSC_VCHR_ID NSC_MKID(42) /* VCHR vnode device */ -#define NSC_NCALL_ID NSC_MKID(43) /* ncall-io */ -#define NSC_SDBC_ID NSC_MKID(80) /* Block based cache */ -#define NSC_RDCLR_ID NSC_MKID(94) /* RDC (low, raw) */ -#define NSC_RDCL_ID NSC_MKID(95) /* RDC (low, cache) */ -#define NSC_IIR_ID NSC_MKID(96) /* Instant Image (raw) */ -#define NSC_II_ID NSC_MKID(98) /* Instant Image */ -#define NSC_RDCHR_ID NSC_MKID(99) /* RDC (high, raw) */ -#define NSC_RDCH_ID NSC_MKID(100) /* RDC (high, cache) */ - -typedef enum nsc_power_ops_e { - Power_Lost, /* Power Failing initial warning */ - /* with timeleft (rideout) minutes */ - - Power_OK, /* Power OK or restored before death */ - - Power_Down /* that's all folks machine will */ - /* be shutdown, save any state */ -} nsc_power_ops_t; - -#ifdef _KERNEL - -/* Module Flags */ - -#define NSC_REFCNT 0x00000001 /* Counts references */ -#define NSC_FILTER 0x00000002 /* Uses lower level driver */ - - -#ifndef _NSC_DEV_H -typedef struct nsc_io_s { int x; } nsc_io_t; -typedef struct nsc_path_s { int x; } nsc_path_t; -#endif - -extern nsc_io_t *nsc_register_io(char *, int, nsc_def_t *); -extern int nsc_unregister_io(nsc_io_t *, int); -extern nsc_path_t *nsc_register_path(char *, int, nsc_io_t *); -extern int nsc_unregister_path(nsc_path_t *, int); -extern int nsc_cache_sizes(int *, int *); -extern int nsc_node_hints(unsigned int *); -extern int nsc_node_hints_set(unsigned int); -extern blind_t nsc_register_power(char *, nsc_def_t *); -extern int nsc_unregister_power(blind_t); - -/* - * Strategy function interface - */ -#ifndef DS_DDICT -typedef int (*strategy_fn_t)(struct buf *); -#endif -extern strategy_fn_t nsc_get_strategy(major_t); - -extern void *nsc_get_devops(major_t); - -#endif /* _KERNEL */ - - -/* Block sizes */ - -#define FBA_SHFT 9 -#define FBA_MASK 0x1ff -#define FBA_SIZE(x) ((x) << FBA_SHFT) /* fba to bytes */ -#define FBA_OFF(x) ((x) & FBA_MASK) /* byte offset */ -#define FBA_LEN(x) FBA_NUM((x) + FBA_MASK) /* len to fba */ -#define FBA_NUM(x) ((nsc_size_t)((uint64_t)(x) >> FBA_SHFT)) - /* bytes to fba */ - - -/* Return values */ - -#define NSC_DONE (0) -#define NSC_PENDING (-1) -#define NSC_HIT (-2) - - -#if defined(_KERNEL) || defined(_KMEMUSER) - -/* - * External file descriptor. - */ - -#ifndef _NSC_DEV_H -typedef struct nsc_fd_s { int x; } nsc_fd_t; -#endif - -#endif /* _KERNEL || _KMEMUSER */ - - -#ifdef _KERNEL - -#define NSC_TRY (1<<24) /* Conditional operation */ -#define NSC_PCATCH (1<<25) /* Catch signals */ -#define NSC_DEFER (1<<26) /* Defer if busy */ -#define NSC_MULTI (1<<27) /* Multiple reserves */ -#define NSC_NOWAIT (1<<28) /* Don't wait if busy */ - -extern nsc_fd_t *nsc_open(char *, int, nsc_def_t *, blind_t, int *); -extern int nsc_close(nsc_fd_t *); -extern char *nsc_pathname(nsc_fd_t *); -extern int nsc_fdpathcmp(nsc_fd_t *, uint64_t, char *); -extern int nsc_shared(nsc_fd_t *); -extern int nsc_setval(nsc_fd_t *, char *, int); -extern int nsc_getval(nsc_fd_t *, char *, int *); -extern int nsc_set_trksize(nsc_fd_t *, nsc_size_t); -extern int nsc_discard_pinned(nsc_fd_t *, nsc_off_t, nsc_size_t); -extern kmutex_t *nsc_lock_addr(nsc_fd_t *); -extern int nsc_attach(nsc_fd_t *, int); -extern int nsc_reserve(nsc_fd_t *, int); -extern void nsc_reserve_lk(nsc_fd_t *); -extern void nsc_release(nsc_fd_t *); -extern int nsc_release_lk(nsc_fd_t *); -extern int nsc_detach(nsc_fd_t *, int); -extern int nsc_avail(nsc_fd_t *); -extern int nsc_held(nsc_fd_t *); -extern int nsc_waiting(nsc_fd_t *); -extern int nsc_partsize(nsc_fd_t *, nsc_size_t *); -extern int nsc_maxfbas(nsc_fd_t *, int, nsc_size_t *); -extern int nsc_get_pinned(nsc_fd_t *); -extern int nsc_max_devices(void); -extern int nsc_control(nsc_fd_t *, int, void *, int); - -#endif /* _KERNEL */ - - -#if defined(_KERNEL) || defined(_KMEMUSER) - -/* - * I/O device structure. - */ - -#ifndef _NSC_DEV_H -typedef struct nsc_iodev_s { int x; } nsc_iodev_t; -#endif - -#ifdef _KERNEL -extern void nsc_set_owner(nsc_fd_t *, nsc_iodev_t *); -extern void nsc_pinned_data(nsc_iodev_t *, nsc_off_t, nsc_size_t); -extern void nsc_unpinned_data(nsc_iodev_t *, nsc_off_t, nsc_size_t); -#endif - - -/* - * Data structures used by I/O interface. - */ - -typedef struct nsc_vec_s { /* Scatter gather element */ - unsigned char *sv_addr; /* Virtual address of data */ - unsigned long sv_vme; /* VME address of data */ - int sv_len; /* Data length in bytes */ -} nsc_vec_t; - - -typedef struct nsc_buf_s { /* Buffer structure */ - nsc_fd_t *sb_fd; /* File descriptor */ - nsc_off_t sb_pos; /* Block offset of data */ - nsc_size_t sb_len; /* Length of data in blocks */ - volatile int sb_flag; /* Buffer flags */ - int sb_error; /* Error code */ - uintptr_t sb_user; /* User definable */ - nsc_vec_t *sb_vec; /* Scatter gather list */ -} nsc_buf_t; - -#endif /* _KERNEL || _KMEMUSER */ - - -/* Allocate flags */ - -#define NSC_RDBUF 0x0001 -#define NSC_WRBUF 0x0002 -#define NSC_PINNABLE 0x0004 -#define NSC_NOBLOCK 0x0008 - -#define NSC_READ (NSC_RDBUF) -#define NSC_WRITE (NSC_WRBUF) -#define NSC_RDWR (NSC_RDBUF | NSC_WRBUF) -#define NSC_RDWRBUF (NSC_RDBUF | NSC_WRBUF) - - -/* Other flags */ - -#define NSC_CACHEBLK 0x0008 /* nsc_maxfbas: size of cache block in fbas */ -#define NSC_HALLOCATED 0x0010 /* handle allocated (IO provider internals) */ -#define NSC_HACTIVE 0x0020 /* handle active (IO provider internals) */ -#define NSC_BCOPY 0x0040 /* bcopy, don't DMA when moving data */ -#define NSC_PAGEIO 0x0080 /* client will use handle for pageio */ -#define NSC_ABUF 0x0100 /* anonymous buffer handle */ -#define NSC_MIXED 0x0200 /* data from 2 devs is mixed in this buffer */ -#define NSC_NODATA 0x0400 /* allocate without data buffer (sb_vec) */ - - -#define NSC_FLAGS 0xffff - -#ifdef _KERNEL - -#define NSC_ANON_CD ((blind_t)(-1)) /* used for IO provider alloc buf */ - -extern int nsc_alloc_buf(nsc_fd_t *, nsc_off_t, nsc_size_t, int, nsc_buf_t **); -extern int nsc_alloc_abuf(nsc_off_t, nsc_size_t, int, nsc_buf_t **); -extern int nsc_read(nsc_buf_t *, nsc_off_t, nsc_size_t, int); -extern int nsc_write(nsc_buf_t *, nsc_off_t, nsc_size_t, int); -extern int nsc_zero(nsc_buf_t *, nsc_off_t, nsc_size_t, int); -extern int nsc_copy(nsc_buf_t *, nsc_buf_t *, nsc_off_t, nsc_off_t, nsc_size_t); -extern int nsc_copy_direct(nsc_buf_t *, nsc_buf_t *, nsc_off_t, - nsc_off_t, nsc_size_t); -extern int nsc_uncommit(nsc_buf_t *, nsc_off_t, nsc_size_t, int); -extern int nsc_free_buf(nsc_buf_t *); -extern nsc_buf_t *nsc_alloc_handle(nsc_fd_t *, - void (*)(), void (*)(), void (*)()); -extern int nsc_free_handle(nsc_buf_t *); -extern int nsc_uread(nsc_fd_t *, void *, void *); -extern int nsc_uwrite(nsc_fd_t *, void *, void *); - -#endif /* _KERNEL */ - - -/* - * Performance hints. - */ - -#define NSC_WRTHRU 0x00010000 -#define NSC_FORCED_WRTHRU 0x00020000 -#define NSC_NOCACHE 0x00040000 -#define NSC_QUEUE 0x00080000 -#define NSC_RDAHEAD 0x00100000 -#define NSC_NO_FORCED_WRTHRU 0x00200000 -#define NSC_METADATA 0x00400000 -#define NSC_SEQ_IO 0x00800000 - -#define NSC_HINTS 0x00ff0000 - - -#ifdef _KERNEL -/* - * node hint actions - */ - -#define NSC_GET_NODE_HINT 0 -#define NSC_SET_NODE_HINT 1 -#define NSC_CLEAR_NODE_HINT 2 - -/* - * Reflective memory spinlocks. - */ - - -#ifndef _NSC_RMSPIN_H -typedef struct nsc_rmlock_s { int x; } nsc_rmlock_t; -#endif - - -extern nsc_rmlock_t *nsc_rm_lock_alloc(char *, int, void *); -extern void nsc_rm_lock_dealloc(nsc_rmlock_t *); -extern int nsc_rm_lock(nsc_rmlock_t *); -extern void nsc_rm_unlock(nsc_rmlock_t *); - -#endif /* _KERNEL */ - - -/* - * Memory allocation routines. - */ - -#define NSC_MEM_LOCAL 0x1 -#define NSC_MEM_GLOBAL 0x4 - -#define NSC_MEM_RESIZE 0x100 -#define NSC_MEM_NVDIRTY 0x400 - - -#ifdef _KERNEL - -#ifndef _NSC_MEM_H -typedef struct nsc_mem_s { int x; } nsc_mem_t; -#endif - - -extern nsc_mem_t *nsc_register_mem(char *, int, int); -extern void nsc_unregister_mem(nsc_mem_t *); -extern void *nsc_kmem_alloc(size_t, int, nsc_mem_t *); -extern void *nsc_kmem_zalloc(size_t, int, nsc_mem_t *); -extern void nsc_kmem_free(void *, size_t); -extern void nsc_mem_sizes(nsc_mem_t *, size_t *, size_t *, size_t *); -extern size_t nsc_mem_avail(nsc_mem_t *); - -/* nvmem suppport */ -typedef void (*nsc_mem_err_cb) (void *, void *, size_t, int); -extern int nsc_commit_mem(void *, void *, size_t, nsc_mem_err_cb); - -extern void nsc_cm_errhdlr(void *, void *, size_t, int); - -#endif /* _KERNEL */ - - -/* - * Max pathname - * Note: Currently defined both here and in nsc_dev.h - */ -#if !defined(NSC_MAXPATH) -#define NSC_MAXPATH 64 -#endif - -#ifdef _KERNEL - -/* - * Inter-module function (callback) services - */ - -#ifndef _NSC_GEN_H -typedef struct nsc_svc_s { int x; } nsc_svc_t; -#endif - -extern nsc_svc_t *nsc_register_svc(char *, void (*)(intptr_t)); -extern int nsc_unregister_svc(nsc_svc_t *); -extern int nsc_call_svc(nsc_svc_t *, intptr_t); - - -/* - * String manipulation functions. - */ - -#ifndef sun -#define sprintf nsc_sprintf -#endif /* sun */ - -extern char *nsc_strdup(char *); -extern void nsc_strfree(char *); -extern int nsc_strmatch(char *, char *); -extern void nsc_sprintf(char *, char *, ...); -extern uint64_t nsc_strhash(char *); - - -/* - * Macro definitions. - */ - -#define NSC_HIER 1 - -#ifndef NULL -#define NULL 0 -#endif - - -/* - * External definitions. - */ - -#undef HZ -extern clock_t HZ; -extern int nsc_max_nodeid, nsc_min_nodeid; - -extern int nsc_node_id(void); -extern char *nsc_node_name(void); -extern int nsc_node_up(int); -extern time_t nsc_time(void); -extern clock_t nsc_lbolt(void); -extern int nsc_delay_sig(clock_t); -extern clock_t nsc_usec(void); -extern void nsc_yield(void); - -extern void nsc_membar_stld(void); -extern uint8_t nsc_ldstub(uint8_t *); -extern caddr_t nsc_caller(void); -extern caddr_t nsc_callee(void); - -extern int nsc_create_process(void (*)(void *), void *, boolean_t); - -extern int nsc_power_init(void); -extern void nsc_power_deinit(void); -extern int nsc_nodeid_data(void); - -#define NSC_ALERT_INFO 0 /* Information alert */ -#define NSC_ALERT_WARNING 1 /* Warning alert */ -#define NSC_ALERT_ERROR 2 /* Error alert */ -#define NSC_ALERT_DOWN 3 /* System or Module down */ - -extern void nsc_do_sysevent(char *, char *, int, int, char *, dev_info_t *); - - -/* - * Missing DDI/DKI definition. - */ - -#if defined(_SYS_CONF_H) -#ifndef D_MP -#define D_MP 0 -#endif -#endif - -extern void *nsc_threadp(void); - -#endif /* _KERNEL */ - - -/* - * Common defines - */ - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef NBBY -#define NBBY 8 /* number of bits per byte */ -#endif - -/* - * kstat definition - */ -#define KSTAT_DATA_CHAR_LEN (sizeof (((kstat_named_t *)0)->value.c)) - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_NSCTL_H */ |