mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-03-11 12:56:21 +03:00
Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #17861
92 lines
2.4 KiB
C
92 lines
2.4 KiB
C
// SPDX-License-Identifier: CDDL-1.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 https://opensource.org/licenses/CDDL-1.0.
|
|
* 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 2006 Sun Microsystems, Inc. All rights reserved.
|
|
* Use is subject to license terms.
|
|
*/
|
|
|
|
#ifndef _SYS_KSTAT_H
|
|
#define _SYS_KSTAT_H
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
|
|
#define KSTAT_STRLEN 255 /* 254 chars + NULL; must be 16 * n - 1 */
|
|
|
|
typedef struct kstat {
|
|
uchar_t ks_flags;
|
|
void *ks_data;
|
|
uint_t ks_ndata;
|
|
size_t ks_data_size;
|
|
int (*ks_update)(struct kstat *, int);
|
|
void *ks_private;
|
|
void *ks_lock;
|
|
} kstat_t;
|
|
|
|
#define KSTAT_TYPE_RAW 0
|
|
#define KSTAT_TYPE_NAMED 1
|
|
|
|
#define KSTAT_FLAG_VIRTUAL 0x01
|
|
#define KSTAT_FLAG_NO_HEADERS 0x80
|
|
|
|
#define KSTAT_READ 0
|
|
#define KSTAT_WRITE 1
|
|
|
|
typedef struct kstat_named {
|
|
char name[KSTAT_STRLEN];
|
|
uchar_t data_type;
|
|
union {
|
|
struct {
|
|
union {
|
|
char *ptr;
|
|
char __pad[8];
|
|
} addr;
|
|
uint32_t len;
|
|
} str;
|
|
int64_t i64;
|
|
uint64_t ui64;
|
|
} value;
|
|
} kstat_named_t;
|
|
|
|
#define KSTAT_DATA_UINT32 2
|
|
#define KSTAT_DATA_INT64 3
|
|
#define KSTAT_DATA_UINT64 4
|
|
#define KSTAT_DATA_STRING 9
|
|
|
|
#define KSTAT_NAMED_PTR(kptr) ((kstat_named_t *)(kptr)->ks_data)
|
|
#define KSTAT_NAMED_STR_PTR(knptr) ((knptr)->value.str.addr.ptr)
|
|
#define KSTAT_NAMED_STR_BUFLEN(knptr) ((knptr)->value.str.len)
|
|
|
|
/*
|
|
* kstat creation, installation and deletion
|
|
*/
|
|
extern kstat_t *kstat_create(const char *, int,
|
|
const char *, const char *, uchar_t, ulong_t, uchar_t);
|
|
extern void kstat_install(kstat_t *);
|
|
extern void kstat_delete(kstat_t *);
|
|
extern void kstat_set_raw_ops(kstat_t *ksp,
|
|
int (*headers)(char *buf, size_t size),
|
|
int (*data)(char *buf, size_t size, void *data),
|
|
void *(*addr)(kstat_t *ksp, loff_t index));
|
|
|
|
#endif /* _SYS_KSTAT_H */
|