2012-12-24 15:36:14 +04:00
|
|
|
#ifndef __CR_SYSCTL_H__
|
|
|
|
#define __CR_SYSCTL_H__
|
2012-02-02 19:55:48 +04:00
|
|
|
|
|
|
|
struct sysctl_req {
|
|
|
|
char *name;
|
|
|
|
void *arg;
|
|
|
|
int type;
|
2015-05-08 15:43:39 +03:00
|
|
|
int flags;
|
2012-02-02 19:55:48 +04:00
|
|
|
};
|
|
|
|
|
2015-04-30 23:07:56 +03:00
|
|
|
extern int sysctl_op(struct sysctl_req *req, size_t nr_req, int op);
|
2012-02-02 19:55:48 +04:00
|
|
|
|
|
|
|
enum {
|
|
|
|
CTL_READ,
|
|
|
|
CTL_WRITE,
|
|
|
|
};
|
|
|
|
|
|
|
|
#define CTL_SHIFT 4 /* Up to 16 types */
|
|
|
|
|
|
|
|
#define CTL_U32 1 /* Single u32 */
|
|
|
|
#define CTL_U64 2 /* Single u64 */
|
|
|
|
#define __CTL_U32A 3 /* Array of u32 */
|
|
|
|
#define __CTL_U64A 4 /* Array of u64 */
|
|
|
|
#define __CTL_STR 5 /* String */
|
2014-10-08 17:21:37 +04:00
|
|
|
#define CTL_32 6 /* Single s32 */
|
2012-02-02 19:55:48 +04:00
|
|
|
|
|
|
|
#define CTL_U32A(n) (__CTL_U32A | ((n) << CTL_SHIFT))
|
|
|
|
#define CTL_U64A(n) (__CTL_U64A | ((n) << CTL_SHIFT))
|
|
|
|
#define CTL_STR(len) (__CTL_STR | ((len) << CTL_SHIFT))
|
|
|
|
|
|
|
|
#define CTL_LEN(t) ((t) >> CTL_SHIFT)
|
|
|
|
#define CTL_TYPE(t) ((t) & ((1 << CTL_SHIFT) - 1))
|
|
|
|
|
2015-05-08 15:43:39 +03:00
|
|
|
/*
|
|
|
|
* Some entries might be missing mark them as optional.
|
|
|
|
*/
|
|
|
|
#define CTL_FLAGS_OPTIONAL 1
|
|
|
|
|
2012-12-25 22:40:24 +04:00
|
|
|
#endif /* __CR_SYSCTL_H__ */
|