FreeBSD kernel kern code
|
#include <sys/cdefs.h>
#include "opt_kdtrace.h"
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/bio.h>
#include <sys/devicestat.h>
#include <sys/sdt.h>
#include <sys/sysctl.h>
#include <sys/malloc.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/conf.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <machine/atomic.h>
Go to the source code of this file.
Data Structures | |
struct | statspage |
Macros | |
#define | DTRACE_DEVSTAT_START() SDT_PROBE2(io, , , start, NULL, ds) |
#define | DTRACE_DEVSTAT_BIO_START() SDT_PROBE2(io, , , start, bp, ds) |
#define | DTRACE_DEVSTAT_DONE() SDT_PROBE2(io, , , done, NULL, ds) |
#define | DTRACE_DEVSTAT_BIO_DONE() SDT_PROBE2(io, , , done, bp, ds) |
#define | DTRACE_DEVSTAT_WAIT_START() SDT_PROBE2(io, , , wait__start, NULL, ds) |
#define | DTRACE_DEVSTAT_WAIT_DONE() SDT_PROBE2(io, , , wait__done, NULL, ds) |
#define | statsperpage (PAGE_SIZE / sizeof(struct devstat)) |
Functions | |
__FBSDID ("$BSDSUniX$") | |
SDT_PROVIDER_DEFINE (io) | |
SDT_PROBE_DEFINE2 (io,,, start,"struct bio *","struct devstat *") | |
SDT_PROBE_DEFINE2 (io,,, done,"struct bio *","struct devstat *") | |
SDT_PROBE_DEFINE2 (io,,, wait__start,"struct bio *","struct devstat *") | |
SDT_PROBE_DEFINE2 (io,,, wait__done,"struct bio *","struct devstat *") | |
MTX_SYSINIT (devstat_mutex,&devstat_mutex,"devstat", MTX_DEF) | |
static struct devstat * | devstat_alloc (void) |
static void | devstat_free (struct devstat *) |
static void | devstat_add_entry (struct devstat *ds, const void *dev_name, int unit_number, uint32_t block_size, devstat_support_flags flags, devstat_type_flags device_type, devstat_priority priority) |
struct devstat * | devstat_new_entry (const void *dev_name, int unit_number, uint32_t block_size, devstat_support_flags flags, devstat_type_flags device_type, devstat_priority priority) |
void | devstat_remove_entry (struct devstat *ds) |
void | devstat_start_transaction (struct devstat *ds, struct bintime *now) |
void | devstat_start_transaction_bio (struct devstat *ds, struct bio *bp) |
void | devstat_end_transaction (struct devstat *ds, uint32_t bytes, devstat_tag_type tag_type, devstat_trans_flags flags, struct bintime *now, struct bintime *then) |
void | devstat_end_transaction_bio (struct devstat *ds, struct bio *bp) |
void | devstat_end_transaction_bio_bt (struct devstat *ds, struct bio *bp, struct bintime *now) |
static int | sysctl_devstat (SYSCTL_HANDLER_ARGS) |
static | SYSCTL_NODE (_kern, OID_AUTO, devstat, CTLFLAG_RD, NULL,"Device Statistics") |
SYSCTL_PROC (_kern_devstat, OID_AUTO, all, CTLFLAG_RD|CTLTYPE_OPAQUE, NULL, 0, sysctl_devstat,"S,devstat","All devices in the devstat list") | |
SYSCTL_INT (_kern_devstat, OID_AUTO, numdevs, CTLFLAG_RD,&devstat_num_devs, 0,"Number of devices in the devstat list") | |
SYSCTL_LONG (_kern_devstat, OID_AUTO, generation, CTLFLAG_RD,&devstat_generation, 0,"Devstat list generation") | |
SYSCTL_INT (_kern_devstat, OID_AUTO, version, CTLFLAG_RD,&devstat_version, 0,"Devstat list version number") | |
static | TAILQ_HEAD (statspage) |
SYSCTL_INT (_debug_sizeof, OID_AUTO, devstat, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, sizeof(struct devstat),"sizeof(struct devstat)") | |
Variables | |
static int | devstat_num_devs |
static long | devstat_generation = 1 |
static int | devstat_version = DEVSTAT_VERSION |
static int | devstat_current_devnumber |
static struct mtx | devstat_mutex |
static struct devstatlist | device_statq = STAILQ_HEAD_INITIALIZER(device_statq) |
static d_mmap_t | devstat_mmap |
static struct cdevsw | devstat_cdevsw |
#define DTRACE_DEVSTAT_BIO_DONE | ( | ) | SDT_PROBE2(io, , , done, bp, ds) |
Definition at line 62 of file subr_devstat.c.
Referenced by devstat_end_transaction_bio_bt().
#define DTRACE_DEVSTAT_BIO_START | ( | ) | SDT_PROBE2(io, , , start, bp, ds) |
Definition at line 60 of file subr_devstat.c.
Referenced by devstat_start_transaction_bio().
#define DTRACE_DEVSTAT_DONE | ( | ) | SDT_PROBE2(io, , , done, NULL, ds) |
Definition at line 61 of file subr_devstat.c.
Referenced by devstat_end_transaction().
#define DTRACE_DEVSTAT_START | ( | ) | SDT_PROBE2(io, , , start, NULL, ds) |
Definition at line 59 of file subr_devstat.c.
Referenced by devstat_start_transaction().
#define DTRACE_DEVSTAT_WAIT_DONE | ( | ) | SDT_PROBE2(io, , , wait__done, NULL, ds) |
Definition at line 64 of file subr_devstat.c.
#define DTRACE_DEVSTAT_WAIT_START | ( | ) | SDT_PROBE2(io, , , wait__start, NULL, ds) |
Definition at line 63 of file subr_devstat.c.
#define statsperpage (PAGE_SIZE / sizeof(struct devstat)) |
Definition at line 458 of file subr_devstat.c.
Referenced by devstat_alloc(), and devstat_free().
__FBSDID | ( | "$BSDSUniX$" | ) |
|
static |
Definition at line 115 of file subr_devstat.c.
References binuptime(), device_statq, devstat_current_devnumber, devstat_generation, devstat_mutex, devstat_num_devs, printf(), and priority.
Referenced by devstat_new_entry().
|
static |
Definition at line 497 of file subr_devstat.c.
References devstat_cdevsw, devstat_mutex, free(), make_dev_credf(), malloc(), and statsperpage.
Referenced by devstat_new_entry().
void devstat_end_transaction | ( | struct devstat * | ds, |
uint32_t | bytes, | ||
devstat_tag_type | tag_type, | ||
devstat_trans_flags | flags, | ||
struct bintime * | now, | ||
struct bintime * | then | ||
) |
Definition at line 294 of file subr_devstat.c.
References bintime(), binuptime(), and DTRACE_DEVSTAT_DONE.
Referenced by devstat_end_transaction_bio_bt().
void devstat_end_transaction_bio | ( | struct devstat * | ds, |
struct bio * | bp | ||
) |
Definition at line 340 of file subr_devstat.c.
References devstat_end_transaction_bio_bt().
Referenced by biofinish().
void devstat_end_transaction_bio_bt | ( | struct devstat * | ds, |
struct bio * | bp, | ||
struct bintime * | now | ||
) |
Definition at line 347 of file subr_devstat.c.
References devstat_end_transaction(), and DTRACE_DEVSTAT_BIO_DONE.
Referenced by devstat_end_transaction_bio().
|
static |
Definition at line 562 of file subr_devstat.c.
References devstat_mutex, and statsperpage.
Referenced by devstat_remove_entry().
struct devstat* devstat_new_entry | ( | const void * | dev_name, |
int | unit_number, | ||
uint32_t | block_size, | ||
devstat_support_flags | flags, | ||
devstat_type_flags | device_type, | ||
devstat_priority | priority | ||
) |
Definition at line 86 of file subr_devstat.c.
References binuptime(), devstat_add_entry(), devstat_alloc(), devstat_generation, and devstat_mutex.
void devstat_remove_entry | ( | struct devstat * | ds | ) |
Definition at line 196 of file subr_devstat.c.
References device_statq, devstat_free(), devstat_generation, devstat_mutex, and devstat_num_devs.
void devstat_start_transaction | ( | struct devstat * | ds, |
struct bintime * | now | ||
) |
Definition at line 226 of file subr_devstat.c.
References binuptime(), devstat_mutex, and DTRACE_DEVSTAT_START.
Referenced by devstat_start_transaction_bio().
void devstat_start_transaction_bio | ( | struct devstat * | ds, |
struct bio * | bp | ||
) |
Definition at line 253 of file subr_devstat.c.
References binuptime(), devstat_mutex, devstat_start_transaction(), and DTRACE_DEVSTAT_BIO_START.
MTX_SYSINIT | ( | devstat_mutex | , |
& | devstat_mutex, | ||
"devstat" | , | ||
MTX_DEF | |||
) |
SDT_PROBE_DEFINE2 | ( | io | , |
start | , | ||
"struct bio *" | , | ||
"struct devstat *" | |||
) |
SDT_PROBE_DEFINE2 | ( | io | , |
done | , | ||
"struct bio *" | , | ||
"struct devstat *" | |||
) |
SDT_PROBE_DEFINE2 | ( | io | , |
wait__start | , | ||
"struct bio *" | , | ||
"struct devstat *" | |||
) |
SDT_PROBE_DEFINE2 | ( | io | , |
wait__done | , | ||
"struct bio *" | , | ||
"struct devstat *" | |||
) |
SDT_PROVIDER_DEFINE | ( | io | ) |
|
static |
Definition at line 381 of file subr_devstat.c.
References device_statq, devstat_generation, devstat_mutex, and devstat_num_devs.
SYSCTL_INT | ( | _kern_devstat | , |
OID_AUTO | , | ||
numdevs | , | ||
CTLFLAG_RD | , | ||
& | devstat_num_devs, | ||
0 | , | ||
"Number of devices in the devstat list" | |||
) |
SYSCTL_INT | ( | _kern_devstat | , |
OID_AUTO | , | ||
version | , | ||
CTLFLAG_RD | , | ||
& | devstat_version, | ||
0 | , | ||
"Devstat list version number" | |||
) |
SYSCTL_INT | ( | _debug_sizeof | , |
OID_AUTO | , | ||
devstat | , | ||
CTLFLAG_RD | , | ||
SYSCTL_NULL_INT_PTR | , | ||
sizeof(struct devstat) | , | ||
"sizeof(struct devstat)" | |||
) |
SYSCTL_LONG | ( | _kern_devstat | , |
OID_AUTO | , | ||
generation | , | ||
CTLFLAG_RD | , | ||
& | devstat_generation, | ||
0 | , | ||
"Devstat list generation" | |||
) |
|
static |
SYSCTL_PROC | ( | _kern_devstat | , |
OID_AUTO | , | ||
all | , | ||
CTLFLAG_RD| | CTLTYPE_OPAQUE, | ||
NULL | , | ||
0 | , | ||
sysctl_devstat | , | ||
" | S, | ||
devstat" | , | ||
"All devices in the devstat list" | |||
) |
|
static |
Definition at line 475 of file subr_devstat.c.
|
static |
Definition at line 73 of file subr_devstat.c.
Referenced by devstat_add_entry(), devstat_remove_entry(), and sysctl_devstat().
|
static |
Definition at line 462 of file subr_devstat.c.
Referenced by devstat_alloc().
|
static |
Definition at line 69 of file subr_devstat.c.
Referenced by devstat_add_entry().
|
static |
Definition at line 67 of file subr_devstat.c.
Referenced by devstat_add_entry(), devstat_new_entry(), devstat_remove_entry(), and sysctl_devstat().
|
static |
Definition at line 460 of file subr_devstat.c.
|
static |
Definition at line 70 of file subr_devstat.c.
Referenced by devstat_add_entry(), devstat_alloc(), devstat_free(), devstat_new_entry(), devstat_remove_entry(), devstat_start_transaction(), devstat_start_transaction_bio(), and sysctl_devstat().
|
static |
Definition at line 66 of file subr_devstat.c.
Referenced by devstat_add_entry(), devstat_remove_entry(), and sysctl_devstat().
|
static |
Definition at line 68 of file subr_devstat.c.