Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Nov 2015 09:50:52 -0800
From:      Conrad Meyer <cem@FreeBSD.org>
To:        Svatopluk Kraus <onwahe@gmail.com>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r290475 - in head: share/man/man9 sys/kern sys/sys
Message-ID:  <CAG6CVpUsqztz2%2BnyMzEkqui4XmDL%2BR2_=km4H-BM-%2B-1NK-b%2Bg@mail.gmail.com>
In-Reply-To: <CAFHCsPUagzwtFZvJ10bAeEH8y8Lkz0N1WL99fbBiBKOb=Mk-rQ@mail.gmail.com>
References:  <201511070143.tA71h13k038232@repo.freebsd.org> <CAFHCsPUagzwtFZvJ10bAeEH8y8Lkz0N1WL99fbBiBKOb=Mk-rQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Sorry about that =E2=80=94 Ravi and I missed this.  I see Konstantin has si=
nce
fixed it (thanks!).  There is also the intptr_t in SYSCTL_HANDLER_ARGS
and oid_arg2 in struct sysctl_oid remaining.

Best,
Conrad

On Sat, Nov 7, 2015 at 12:37 AM, Svatopluk Kraus <onwahe@gmail.com> wrote:
> You broke buildkernel. The following patch helps:
>
> diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
> index 950e712..a34c890 100644
> --- a/sys/sys/sysctl.h
> +++ b/sys/sys/sysctl.h
> @@ -37,6 +37,7 @@
>  #define _SYS_SYSCTL_H_
>
>  #include <sys/queue.h>
> +#include <sys/stdint.h>
>
>  struct thread;
>  /*
> @@ -949,7 +950,7 @@ extern char kern_ident[];
>  /* Dynamic oid handling */
>  struct sysctl_oid *sysctl_add_oid(struct sysctl_ctx_list *clist,
>       struct sysctl_oid_list *parent, int nbr, const char *name, int kind=
,
> -     void *arg1, intptr_t arg2, int (*handler)(SYSCTL_HANDLER_ARGS),
> +     void *arg1, intmax_t arg2, int (*handler)(SYSCTL_HANDLER_ARGS),
>       const char *fmt, const char *descr);
>  int sysctl_remove_name(struct sysctl_oid *parent, const char *name, int =
del,
>       int recurse);
>
>
>
>
> On Sat, Nov 7, 2015 at 2:43 AM, Conrad E. Meyer <cem@freebsd.org> wrote:
>> Author: cem
>> Date: Sat Nov  7 01:43:01 2015
>> New Revision: 290475
>> URL: https://svnweb.freebsd.org/changeset/base/290475
>>
>> Log:
>>   Round out SYSCTL macros to the full set of fixed-width types
>>
>>   Add S8, S16, S32, and U32 types;  add SYSCTL*() macros for them, as we=
ll
>>   as for the existing 64-bit types.  (While SYSCTL*QUAD and UQUAD macros
>>   already exist, they do not take the same sort of 'val' parameter that
>>   the other macros do.)
>>
>>   Clean up the documented "types" in the sysctl.9 document.  (These are
>>   macros and thus not real types, but the manual page documents intent.)
>>
>>   The sysctl_add_oid(9) arg2 has been bumped from intptr_t to intmax_t t=
o
>>   accommodate 64-bit types on 32-bit pointer architectures.
>>
>>   This is just the kernel support piece; the userspace sysctl(1) support
>>   will follow in a later patch.
>>
>>   Submitted by: Ravi Pokala <rpokala@panasas.com>
>>   Reviewed by:  cem
>>   Relnotes:     no
>>   Sponsored by: Panasas
>>   Differential Revision:        https://reviews.freebsd.org/D4091
>>
>> Modified:
>>   head/share/man/man9/Makefile
>>   head/share/man/man9/sysctl.9
>>   head/share/man/man9/sysctl_add_oid.9
>>   head/sys/kern/kern_sysctl.c
>>   head/sys/sys/sysctl.h
>>
>> Modified: head/share/man/man9/Makefile
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- head/share/man/man9/Makefile        Sat Nov  7 00:51:51 2015        =
(r290474)
>> +++ head/share/man/man9/Makefile        Sat Nov  7 01:43:01 2015        =
(r290475)
>> @@ -1631,10 +1631,16 @@ MLINKS+=3Dsysctl.9 SYSCTL_DECL.9 \
>>         sysctl.9 SYSCTL_ADD_PROC.9 \
>>         sysctl.9 SYSCTL_ADD_QUAD.9 \
>>         sysctl.9 SYSCTL_ADD_ROOT_NODE.9 \
>> +       sysctl.9 SYSCTL_ADD_S8.9 \
>> +       sysctl.9 SYSCTL_ADD_S16.9 \
>> +       sysctl.9 SYSCTL_ADD_S32.9 \
>> +       sysctl.9 SYSCTL_ADD_S64.9 \
>>         sysctl.9 SYSCTL_ADD_STRING.9 \
>>         sysctl.9 SYSCTL_ADD_STRUCT.9 \
>>         sysctl.9 SYSCTL_ADD_U8.9 \
>>         sysctl.9 SYSCTL_ADD_U16.9 \
>> +       sysctl.9 SYSCTL_ADD_U32.9 \
>> +       sysctl.9 SYSCTL_ADD_U64.9 \
>>         sysctl.9 SYSCTL_ADD_UAUTO.9 \
>>         sysctl.9 SYSCTL_ADD_UINT.9 \
>>         sysctl.9 SYSCTL_ADD_ULONG.9 \
>> @@ -1650,10 +1656,16 @@ MLINKS+=3Dsysctl.9 SYSCTL_DECL.9 \
>>         sysctl.9 SYSCTL_PROC.9 \
>>         sysctl.9 SYSCTL_QUAD.9 \
>>         sysctl.9 SYSCTL_ROOT_NODE.9 \
>> +       sysctl.9 SYSCTL_S8.9 \
>> +       sysctl.9 SYSCTL_S16.9 \
>> +       sysctl.9 SYSCTL_S32.9 \
>> +       sysctl.9 SYSCTL_S64.9 \
>>         sysctl.9 SYSCTL_STRING.9 \
>>         sysctl.9 SYSCTL_STRUCT.9 \
>>         sysctl.9 SYSCTL_U8.9 \
>>         sysctl.9 SYSCTL_U16.9 \
>> +       sysctl.9 SYSCTL_U32.9 \
>> +       sysctl.9 SYSCTL_U64.9 \
>>         sysctl.9 SYSCTL_UINT.9 \
>>         sysctl.9 SYSCTL_ULONG.9 \
>>         sysctl.9 SYSCTL_UQUAD.9
>>
>> Modified: head/share/man/man9/sysctl.9
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- head/share/man/man9/sysctl.9        Sat Nov  7 00:51:51 2015        =
(r290474)
>> +++ head/share/man/man9/sysctl.9        Sat Nov  7 01:43:01 2015        =
(r290475)
>> @@ -37,10 +37,16 @@
>>  .Nm SYSCTL_ADD_PROC ,
>>  .Nm SYSCTL_ADD_QUAD ,
>>  .Nm SYSCTL_ADD_ROOT_NODE ,
>> +.Nm SYSCTL_ADD_S8 ,
>> +.Nm SYSCTL_ADD_S16 ,
>> +.Nm SYSCTL_ADD_S32 ,
>> +.Nm SYSCTL_ADD_S64 ,
>>  .Nm SYSCTL_ADD_STRING ,
>>  .Nm SYSCTL_ADD_STRUCT ,
>>  .Nm SYSCTL_ADD_U8 ,
>>  .Nm SYSCTL_ADD_U16 ,
>> +.Nm SYSCTL_ADD_U32 ,
>> +.Nm SYSCTL_ADD_U64 ,
>>  .Nm SYSCTL_ADD_UAUTO ,
>>  .Nm SYSCTL_ADD_UINT ,
>>  .Nm SYSCTL_ADD_ULONG ,
>> @@ -56,10 +62,16 @@
>>  .Nm SYSCTL_PROC ,
>>  .Nm SYSCTL_QUAD ,
>>  .Nm SYSCTL_ROOT_NODE ,
>> +.Nm SYSCTL_S8 ,
>> +.Nm SYSCTL_S16 ,
>> +.Nm SYSCTL_S32 ,
>> +.Nm SYSCTL_S64 ,
>>  .Nm SYSCTL_STRING ,
>>  .Nm SYSCTL_STRUCT ,
>>  .Nm SYSCTL_U8 ,
>>  .Nm SYSCTL_U16 ,
>> +.Nm SYSCTL_U32 ,
>> +.Nm SYSCTL_U64 ,
>>  .Nm SYSCTL_UINT ,
>>  .Nm SYSCTL_ULONG ,
>>  .Nm SYSCTL_UQUAD
>> @@ -76,7 +88,7 @@
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>>  .Fa "int *ptr"
>> -.Fa "intptr_t val"
>> +.Fa "int val"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -131,7 +143,7 @@
>>  .Fa "int number"
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>> -.Fa "quad_t *ptr"
>> +.Fa "int64_t *ptr"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -144,6 +156,50 @@
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_S8
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "int8_t *ptr"
>> +.Fa "int8_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_S16
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "int16_t *ptr"
>> +.Fa "int16_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_S32
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "int32_t *ptr"
>> +.Fa "int32_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_S64
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "int64_t *ptr"
>> +.Fa "int64_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>>  .Fo SYSCTL_ADD_STRING
>>  .Fa "struct sysctl_ctx_list *ctx"
>>  .Fa "struct sysctl_oid_list *parent"
>> @@ -172,8 +228,8 @@
>>  .Fa "int number"
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>> -.Fa "unsigned int *ptr"
>> -.Fa "intptr_t val"
>> +.Fa "uint8_t *ptr"
>> +.Fa "uint8_t val"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -183,8 +239,30 @@
>>  .Fa "int number"
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>> -.Fa "unsigned int *ptr"
>> -.Fa "intptr_t val"
>> +.Fa "uint16_t *ptr"
>> +.Fa "uint16_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_U32
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "uint32_t *ptr"
>> +.Fa "uint32_t val"
>> +.Fa "const char *descr"
>> +.Fc
>> +.Ft struct sysctl_oid *
>> +.Fo SYSCTL_ADD_U64
>> +.Fa "struct sysctl_ctx_list *ctx"
>> +.Fa "struct sysctl_oid_list *parent"
>> +.Fa "int number"
>> +.Fa "const char *name"
>> +.Fa "int ctlflags"
>> +.Fa "uint64_t *ptr"
>> +.Fa "uint64_t val"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -195,7 +273,7 @@
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>>  .Fa "unsigned int *ptr"
>> -.Fa "intptr_t val"
>> +.Fa "unsigned int val"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -215,7 +293,7 @@
>>  .Fa "int number"
>>  .Fa "const char *name"
>>  .Fa "int ctlflags"
>> -.Fa "u_quad_t *ptr"
>> +.Fa "uint64_t *ptr"
>>  .Fa "const char *descr"
>>  .Fc
>>  .Ft struct sysctl_oid *
>> @@ -251,11 +329,17 @@
>>  .Fn SYSCTL_OPAQUE parent number name ctlflags ptr len format descr
>>  .Fn SYSCTL_PROC parent number name ctlflags arg1 arg2 handler format de=
scr
>>  .Fn SYSCTL_QUAD parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_ROOT_NODE number name ctlflags handler descr
>> +.Fn SYSCTL_S8 parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_S16 parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_S32 parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_S64 parent number name ctlflags ptr val descr
>>  .Fn SYSCTL_STRING parent number name ctlflags arg len descr
>>  .Fn SYSCTL_STRUCT parent number name ctlflags ptr struct_type descr
>> -.Fn SYSCTL_ROOT_NODE number name ctlflags handler descr
>>  .Fn SYSCTL_U8 parent number name ctlflags ptr val descr
>>  .Fn SYSCTL_U16 parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_U32 parent number name ctlflags ptr val descr
>> +.Fn SYSCTL_U64 parent number name ctlflags ptr val descr
>>  .Fn SYSCTL_UINT parent number name ctlflags ptr val descr
>>  .Fn SYSCTL_ULONG parent number name ctlflags ptr val descr
>>  .Fn SYSCTL_UQUAD parent number name ctlflags ptr val descr
>> @@ -439,10 +523,16 @@ Static sysctls are declared using one of
>>  .Fn SYSCTL_PROC ,
>>  .Fn SYSCTL_QUAD ,
>>  .Fn SYSCTL_ROOT_NODE ,
>> +.Fn SYSCTL_S8 ,
>> +.Fn SYSCTL_S16 ,
>> +.Fn SYSCTL_S32 ,
>> +.Fn SYSCTL_S64 ,
>>  .Fn SYSCTL_STRING ,
>>  .Fn SYSCTL_STRUCT ,
>>  .Fn SYSCTL_U8 ,
>>  .Fn SYSCTL_U16 ,
>> +.Fn SYSCTL_U32 ,
>> +.Fn SYSCTL_U64 ,
>>  .Fn SYSCTL_UINT ,
>>  .Fn SYSCTL_ULONG
>>  or
>> @@ -457,10 +547,16 @@ Dynamic nodes are created using one of t
>>  .Fn SYSCTL_ADD_PROC ,
>>  .Fn SYSCTL_ADD_QUAD ,
>>  .Fn SYSCTL_ADD_ROOT_NODE ,
>> +.Fn SYSCTL_ADD_S8 ,
>> +.Fn SYSCTL_ADD_S16 ,
>> +.Fn SYSCTL_ADD_S32 ,
>> +.Fn SYSCTL_ADD_S64 ,
>>  .Fn SYSCTL_ADD_STRING ,
>>  .Fn SYSCTL_ADD_STRUCT ,
>>  .Fn SYSCTL_ADD_U8 ,
>>  .Fn SYSCTL_ADD_U16 ,
>> +.Fn SYSCTL_ADD_U32 ,
>> +.Fn SYSCTL_ADD_U64 ,
>>  .Fn SYSCTL_ADD_UAUTO ,
>>  .Fn SYSCTL_ADD_UINT ,
>>  .Fn SYSCTL_ADD_ULONG ,
>> @@ -484,6 +580,12 @@ This is a node intended to be a parent f
>>  This is a signed integer.
>>  .It Dv CTLTYPE_STRING
>>  This is a nul-terminated string stored in a character array.
>> +.It Dv CTLTYPE_S8
>> +This is an 8-bit signed integer.
>> +.It Dv CTLTYPE_S16
>> +This is a 16-bit signed integer.
>> +.It Dv CTLTYPE_S32
>> +This is a 32-bit signed integer.
>>  .It Dv CTLTYPE_S64
>>  This is a 64-bit signed integer.
>>  .It Dv CTLTYPE_OPAQUE
>> @@ -495,14 +597,16 @@ Alias for
>>  This is an 8-bit unsigned integer.
>>  .It Dv CTLTYPE_U16
>>  This is a 16-bit unsigned integer.
>> +.It Dv CTLTYPE_U32
>> +This is a 32-bit unsigned integer.
>> +.It Dv CTLTYPE_U64
>> +This is a 64-bit unsigned integer.
>>  .It Dv CTLTYPE_UINT
>>  This is an unsigned integer.
>>  .It Dv CTLTYPE_LONG
>>  This is a signed long.
>>  .It Dv CTLTYPE_ULONG
>>  This is an unsigned long.
>> -.It Dv CTLTYPE_U64
>> -This is a 64-bit unsigned integer.
>>  .El
>>  .Pp
>>  All sysctl types except for new node declarations require one of the fo=
llowing
>>
>> Modified: head/share/man/man9/sysctl_add_oid.9
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- head/share/man/man9/sysctl_add_oid.9        Sat Nov  7 00:51:51 2015=
        (r290474)
>> +++ head/share/man/man9/sysctl_add_oid.9        Sat Nov  7 01:43:01 2015=
        (r290475)
>> @@ -47,7 +47,7 @@
>>  .Fa "const char *name"
>>  .Fa "int kind"
>>  .Fa "void *arg1"
>> -.Fa "intptr_t arg2"
>> +.Fa "intmax_t arg2"
>>  .Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
>>  .Fa "const char *format"
>>  .Fa "const char *descr"
>>
>> Modified: head/sys/kern/kern_sysctl.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- head/sys/kern/kern_sysctl.c Sat Nov  7 00:51:51 2015        (r290474=
)
>> +++ head/sys/kern/kern_sysctl.c Sat Nov  7 01:43:01 2015        (r290475=
)
>> @@ -643,7 +643,7 @@ sysctl_remove_oid_locked(struct sysctl_o
>>   */
>>  struct sysctl_oid *
>>  sysctl_add_oid(struct sysctl_ctx_list *clist, struct sysctl_oid_list *p=
arent,
>> -       int number, const char *name, int kind, void *arg1, intptr_t arg=
2,
>> +       int number, const char *name, int kind, void *arg1, intmax_t arg=
2,
>>         int (*handler)(SYSCTL_HANDLER_ARGS), const char *fmt, const char=
 *descr)
>>  {
>>         struct sysctl_oid *oidp;
>> @@ -1192,6 +1192,38 @@ sysctl_handle_16(SYSCTL_HANDLER_ARGS)
>>  }
>>
>>  /*
>> + * Handle an int32_t, signed or unsigned.
>> + * Two cases:
>> + *     a variable:  point arg1 at it.
>> + *     a constant:  pass it in arg2.
>> + */
>> +
>> +int
>> +sysctl_handle_32(SYSCTL_HANDLER_ARGS)
>> +{
>> +       int32_t tmpout;
>> +       int error =3D 0;
>> +
>> +       /*
>> +        * Attempt to get a coherent snapshot by making a copy of the da=
ta.
>> +        */
>> +       if (arg1)
>> +               tmpout =3D *(int32_t *)arg1;
>> +       else
>> +               tmpout =3D arg2;
>> +       error =3D SYSCTL_OUT(req, &tmpout, sizeof(tmpout));
>> +
>> +       if (error || !req->newptr)
>> +               return (error);
>> +
>> +       if (!arg1)
>> +               error =3D EPERM;
>> +       else
>> +               error =3D SYSCTL_IN(req, arg1, sizeof(tmpout));
>> +       return (error);
>> +}
>> +
>> +/*
>>   * Handle an int, signed or unsigned.
>>   * Two cases:
>>   *     a variable:  point arg1 at it.
>>
>> Modified: head/sys/sys/sysctl.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- head/sys/sys/sysctl.h       Sat Nov  7 00:51:51 2015        (r290474=
)
>> +++ head/sys/sys/sysctl.h       Sat Nov  7 01:43:01 2015        (r290475=
)
>> @@ -75,6 +75,10 @@ struct ctlname {
>>  #define        CTLTYPE_U64     9       /* name describes an unsigned 64=
-bit number */
>>  #define        CTLTYPE_U8      0xa     /* name describes an unsigned 8-=
bit number */
>>  #define        CTLTYPE_U16     0xb     /* name describes an unsigned 16=
-bit number */
>> +#define        CTLTYPE_S8      0xc     /* name describes a signed 8-bit=
 number */
>> +#define        CTLTYPE_S16     0xd     /* name describes a signed 16-bi=
t number */
>> +#define        CTLTYPE_S32     0xe     /* name describes a signed 32-bi=
t number */
>> +#define        CTLTYPE_U32     0xf     /* name describes an unsigned 32=
-bit number */
>>
>>  #define        CTLFLAG_RD      0x80000000      /* Allow reads of variab=
le */
>>  #define        CTLFLAG_WR      0x40000000      /* Allow writes to the v=
ariable */
>> @@ -192,10 +196,11 @@ struct sysctl_oid {
>>
>>  int sysctl_handle_8(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_16(SYSCTL_HANDLER_ARGS);
>> +int sysctl_handle_32(SYSCTL_HANDLER_ARGS);
>> +int sysctl_handle_64(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_int(SYSCTL_HANDLER_ARGS);
>>  int sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_long(SYSCTL_HANDLER_ARGS);
>> -int sysctl_handle_64(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_string(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_opaque(SYSCTL_HANDLER_ARGS);
>>  int sysctl_handle_counter_u64(SYSCTL_HANDLER_ARGS);
>> @@ -323,6 +328,26 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_e
>>             __arg, len, sysctl_handle_string, "A", __DESCR(descr));     =
\
>>  })
>>
>> +/* Oid for a signed 8-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_S8_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_S8(parent, nbr, name, access, ptr, val, descr)   =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_S8 | CTLFLAG_MPSAFE | (access),             \
>> +           ptr, val, sysctl_handle_8, "C", descr);             \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S8) && \
>> +           sizeof(int8_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_S8(ctx, parent, nbr, name, access, ptr, val, =
descr)  \
>> +({                                                                     =
\
>> +       int8_t *__ptr =3D (ptr);                                        =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S8);      =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_S8 | CTLFLAG_MPSAFE | (access),                     =
\
>> +           __ptr, val, sysctl_handle_8, "C", __DESCR(descr));  \
>> +})
>> +
>>  /* Oid for an unsigned 8-bit int.  If ptr is NULL, val is returned. */
>>  #define        SYSCTL_NULL_U8_PTR ((unsigned *)NULL)
>>  #define        SYSCTL_U8(parent, nbr, name, access, ptr, val, descr)   =
\
>> @@ -343,6 +368,26 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_e
>>             __ptr, val, sysctl_handle_8, "CU", __DESCR(descr)); \
>>  })
>>
>> +/* Oid for a signed 16-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_S16_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_S16(parent, nbr, name, access, ptr, val, descr)  =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_S16 | CTLFLAG_MPSAFE | (access),            \
>> +           ptr, val, sysctl_handle_16, "S", descr);            \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S16) && \
>> +           sizeof(int16_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_S16(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>> +({                                                                     =
\
>> +       int16_t *__ptr =3D (ptr);                                       =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S16);     =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_S16 | CTLFLAG_MPSAFE | (access),                    =
\
>> +           __ptr, val, sysctl_handle_16, "S", __DESCR(descr)); \
>> +})
>> +
>>  /* Oid for an unsigned 16-bit int.  If ptr is NULL, val is returned. */
>>  #define        SYSCTL_NULL_U16_PTR ((unsigned *)NULL)
>>  #define        SYSCTL_U16(parent, nbr, name, access, ptr, val, descr)  =
\
>> @@ -355,7 +400,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_e
>>
>>  #define        SYSCTL_ADD_U16(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>>  ({                                                                     =
\
>> -       uint16_t *__ptr =3D (ptr);                                      =
          \
>> +       uint16_t *__ptr =3D (ptr);                                      =
  \
>>         CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>>             ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_U16);     =
    \
>>         sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> @@ -363,6 +408,86 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_e
>>             __ptr, val, sysctl_handle_16, "SU", __DESCR(descr));        =
\
>>  })
>>
>> +/* Oid for a signed 32-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_S32_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_S32(parent, nbr, name, access, ptr, val, descr)  =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_S32 | CTLFLAG_MPSAFE | (access),            \
>> +           ptr, val, sysctl_handle_32, "I", descr);            \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S32) && \
>> +           sizeof(int32_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_S32(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>> +({                                                                     =
\
>> +       int32_t *__ptr =3D (ptr);                                       =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S32);     =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_S32 | CTLFLAG_MPSAFE | (access),                    =
\
>> +           __ptr, val, sysctl_handle_32, "I", __DESCR(descr)); \
>> +})
>> +
>> +/* Oid for an unsigned 32-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_U32_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_U32(parent, nbr, name, access, ptr, val, descr)  =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_U32 | CTLFLAG_MPSAFE | (access),            \
>> +           ptr, val, sysctl_handle_32, "IU", descr);           \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_U32) && \
>> +           sizeof(uint32_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_U32(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>> +({                                                                     =
\
>> +       uint32_t *__ptr =3D (ptr);                                      =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_U32);     =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_U32 | CTLFLAG_MPSAFE | (access),                    =
\
>> +           __ptr, val, sysctl_handle_32, "IU", __DESCR(descr));        =
\
>> +})
>> +
>> +/* Oid for a signed 64-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_S64_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_S64(parent, nbr, name, access, ptr, val, descr)  =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_S64 | CTLFLAG_MPSAFE | (access),            \
>> +           ptr, val, sysctl_handle_64, "Q", descr);            \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S64) && \
>> +           sizeof(int64_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_S64(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>> +({                                                                     =
\
>> +       int64_t *__ptr =3D (ptr);                                       =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_S64);     =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_S64 | CTLFLAG_MPSAFE | (access),                    =
\
>> +           __ptr, val, sysctl_handle_64, "Q", __DESCR(descr)); \
>> +})
>> +
>> +/* Oid for an unsigned 64-bit int.  If ptr is NULL, val is returned. */
>> +#define        SYSCTL_NULL_U64_PTR ((unsigned *)NULL)
>> +#define        SYSCTL_U64(parent, nbr, name, access, ptr, val, descr)  =
\
>> +       SYSCTL_OID(parent, nbr, name,                           \
>> +           CTLTYPE_U64 | CTLFLAG_MPSAFE | (access),            \
>> +           ptr, val, sysctl_handle_64, "QU", descr);           \
>> +       CTASSERT((((access) & CTLTYPE) =3D=3D 0 ||                  \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_U64) && \
>> +           sizeof(uint64_t) =3D=3D sizeof(*(ptr)))
>> +
>> +#define        SYSCTL_ADD_U64(ctx, parent, nbr, name, access, ptr, val,=
 descr) \
>> +({                                                                     =
\
>> +       uint64_t *__ptr =3D (ptr);                                      =
  \
>> +       CTASSERT(((access) & CTLTYPE) =3D=3D 0 ||                       =
    \
>> +           ((access) & SYSCTL_CT_ASSERT_MASK) =3D=3D CTLTYPE_U64);     =
    \
>> +       sysctl_add_oid(ctx, parent, nbr, name,                          =
\
>> +           CTLTYPE_U64 | CTLFLAG_MPSAFE | (access),                    =
\
>> +           __ptr, val, sysctl_handle_64, "QU", __DESCR(descr));        =
\
>> +})
>> +
>>  /* Oid for an int.  If ptr is SYSCTL_NULL_INT_PTR, val is returned. */
>>  #define        SYSCTL_NULL_INT_PTR ((int *)NULL)
>>  #define        SYSCTL_INT(parent, nbr, name, access, ptr, val, descr)  =
\
>>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpUsqztz2%2BnyMzEkqui4XmDL%2BR2_=km4H-BM-%2B-1NK-b%2Bg>