Cross Reference: drm_kstat.c
xref
: /
solaris-x11-s11
/
open-src
/
kernel
/
efb
/
src
/
drm_kstat.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
1450
N/A
/*
1450
N/A
* Copyright (c) 2006, 2008, Oracle
and
/
or
its affiliates. All rights reserved.
1450
N/A
*/
1450
N/A
1450
N/A
#
include
"
drmP.h
"
1450
N/A
#
include
<
sys
/
kstat.h
>
1450
N/A
#
include
<
sys
/
ddi.h
>
1450
N/A
#
include
<
sys
/
sunddi.h
>
1450
N/A
#
include
<
sys
/
sunldi.h
>
1450
N/A
1450
N/A
static
char
*
drmkstat_name
[] = {
1450
N/A
"opens"
,
1450
N/A
"closes"
,
1450
N/A
"IOCTLs"
,
1450
N/A
"locks"
,
1450
N/A
"unlocks"
,
1450
N/A
NULL
1450
N/A
};
1450
N/A
1450
N/A
static
int
1450
N/A
drm_kstat_update
(
kstat_t
*
ksp
,
int
flag
)
1450
N/A
{
1450
N/A
drm_device_t
*
sc
;
1450
N/A
kstat_named_t
*
knp
;
1450
N/A
int
tmp
;
1450
N/A
1450
N/A
if
(
flag
!=
KSTAT_READ
)
1450
N/A
return
(
EACCES
);
1450
N/A
1450
N/A
sc
=
ksp
->
ks_private
;
1450
N/A
knp
=
ksp
->
ks_data
;
1450
N/A
1450
N/A
for
(
tmp
=
1
;
tmp
<
6
;
tmp
++) {
1450
N/A
(
knp
++)->
value
.
ui32
=
sc
->
counts
[
tmp
];
1450
N/A
}
1450
N/A
1450
N/A
return
(0);
1450
N/A
}
1450
N/A
1450
N/A
int
1450
N/A
drm_init_kstats
(
drm_device_t
*
sc
)
1450
N/A
{
1450
N/A
int
instance
;
1450
N/A
kstat_t
*
ksp
;
1450
N/A
kstat_named_t
*
knp
;
1450
N/A
char
*
np
;
1450
N/A
char
**
aknp
;
1450
N/A
1450
N/A
instance
=
ddi_get_instance
(
sc
->
dip
);
1450
N/A
aknp
=
drmkstat_name
;
1450
N/A
ksp
=
kstat_create
(
"drm"
,
instance
,
"drminfo"
,
"drm"
,
1450
N/A
KSTAT_TYPE_NAMED
,
sizeof
(
drmkstat_name
)/
sizeof
(
char
*) -
1
,
1450
N/A
KSTAT_FLAG_PERSISTENT
);
1450
N/A
if
(
ksp
==
NULL
)
1450
N/A
return
(
NULL
);
1450
N/A
1450
N/A
ksp
->
ks_private
=
sc
;
1450
N/A
ksp
->
ks_update
=
drm_kstat_update
;
1450
N/A
for
(
knp
=
ksp
->
ks_data
; (
np
= (*
aknp
)) !=
NULL
;
knp
++,
aknp
++) {
1450
N/A
kstat_named_init
(
knp
,
np
,
KSTAT_DATA_UINT32
);
1450
N/A
}
1450
N/A
kstat_install
(
ksp
);
1450
N/A
1450
N/A
sc
->
asoft_ksp
=
ksp
;
1450
N/A
1450
N/A
return
(0);
1450
N/A
}
1450
N/A
1450
N/A
void
1450
N/A
drm_fini_kstats
(
drm_device_t
*
sc
)
1450
N/A
{
1450
N/A
if
(
sc
->
asoft_ksp
)
1450
N/A
kstat_delete
(
sc
->
asoft_ksp
);
1450
N/A
else
1450
N/A
cmn_err
(
CE_WARN
,
"attempt to delete null kstat"
);
1450
N/A
}