Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 May 2011 10:35:18 -0700
From:      mdf@FreeBSD.org
To:        Poul-Henning Kamp <phk@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r221993 - in head/sys: kern sys
Message-ID:  <BANLkTin15ap=L5q6Ji45B8-EQm9Gg7q8qQ@mail.gmail.com>
In-Reply-To: <201105161618.p4GGIeDd089851@svn.freebsd.org>
References:  <201105161618.p4GGIeDd089851@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 16, 2011 at 9:18 AM, Poul-Henning Kamp <phk@freebsd.org> wrote:
> Author: phk
> Date: Mon May 16 16:18:40 2011
> New Revision: 221993
> URL: http://svn.freebsd.org/changeset/base/221993
>
> Log:
> =A0Change the length quantities of sbufs to be ssize_t rather than int.

Why?

I don't object at all to changing the API to return ssize_t (though I
see no need), but changing the struct breaks the KBI for no
perceivable gain.  Do we really expect someone to put more than 2GB
into something that is a string buffer?

Thanks,
matthew

> =A0Constify a couple of arguments.
>
> Modified:
> =A0head/sys/kern/subr_sbuf.c
> =A0head/sys/sys/sbuf.h
>
> Modified: head/sys/kern/subr_sbuf.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/subr_sbuf.c =A0 Mon May 16 15:59:50 2011 =A0 =A0 =A0 =
=A0(r221992)
> +++ head/sys/kern/subr_sbuf.c =A0 Mon May 16 16:18:40 2011 =A0 =A0 =A0 =
=A0(r221993)
> @@ -94,7 +94,8 @@ _assert_sbuf_integrity(const char *fun,
> =A0 =A0 =A0 =A0KASSERT(s->s_buf !=3D NULL,
> =A0 =A0 =A0 =A0 =A0 =A0("%s called with uninitialized or corrupt sbuf", f=
un));
> =A0 =A0 =A0 =A0KASSERT(s->s_len < s->s_size,
> - =A0 =A0 =A0 =A0 =A0 ("wrote past end of sbuf (%d >=3D %d)", s->s_len, s=
->s_size));
> + =A0 =A0 =A0 =A0 =A0 ("wrote past end of sbuf (%jd >=3D %jd)",
> + =A0 =A0 =A0 =A0 =A0 (intmax_t)s->s_len, (intmax_t)s->s_size));
> =A0}
>
> =A0static void
> @@ -255,16 +256,17 @@ sbuf_clear(struct sbuf *s)
> =A0* Effectively truncates the sbuf at the new position.
> =A0*/
> =A0int
> -sbuf_setpos(struct sbuf *s, int pos)
> +sbuf_setpos(struct sbuf *s, ssize_t pos)
> =A0{
>
> =A0 =A0 =A0 =A0assert_sbuf_integrity(s);
> =A0 =A0 =A0 =A0assert_sbuf_state(s, 0);
>
> =A0 =A0 =A0 =A0KASSERT(pos >=3D 0,
> - =A0 =A0 =A0 =A0 =A0 ("attempt to seek to a negative position (%d)", pos=
));
> + =A0 =A0 =A0 =A0 =A0 ("attempt to seek to a negative position (%jd)", (i=
ntmax_t)pos));
> =A0 =A0 =A0 =A0KASSERT(pos < s->s_size,
> - =A0 =A0 =A0 =A0 =A0 ("attempt to seek past end of sbuf (%d >=3D %d)", p=
os, s->s_size));
> + =A0 =A0 =A0 =A0 =A0 ("attempt to seek past end of sbuf (%jd >=3D %jd)",
> + =A0 =A0 =A0 =A0 =A0 (intmax_t)pos, (intmax_t)s->s_size));
>
> =A0 =A0 =A0 =A0if (pos < 0 || pos > s->s_len)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return (-1);
> @@ -640,7 +642,7 @@ sbuf_trim(struct sbuf *s)
> =A0* Check if an sbuf has an error.
> =A0*/
> =A0int
> -sbuf_error(struct sbuf *s)
> +sbuf_error(const struct sbuf *s)
> =A0{
>
> =A0 =A0 =A0 =A0return (s->s_error);
> @@ -691,7 +693,7 @@ sbuf_data(struct sbuf *s)
> =A0/*
> =A0* Return the length of the sbuf data.
> =A0*/
> -int
> +ssize_t
> =A0sbuf_len(struct sbuf *s)
> =A0{
>
> @@ -728,7 +730,7 @@ sbuf_delete(struct sbuf *s)
> =A0* Check if an sbuf has been finished.
> =A0*/
> =A0int
> -sbuf_done(struct sbuf *s)
> +sbuf_done(const struct sbuf *s)
> =A0{
>
> =A0 =A0 =A0 =A0return (SBUF_ISFINISHED(s));
>
> Modified: head/sys/sys/sbuf.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/sbuf.h Mon May 16 15:59:50 2011 =A0 =A0 =A0 =A0(r221992)
> +++ head/sys/sys/sbuf.h Mon May 16 16:18:40 2011 =A0 =A0 =A0 =A0(r221993)
> @@ -44,8 +44,8 @@ struct sbuf {
> =A0 =A0 =A0 =A0sbuf_drain_func *s_drain_func; =A0/* drain function */
> =A0 =A0 =A0 =A0void =A0 =A0 =A0 =A0 =A0 =A0*s_drain_arg; =A0 /* user-supp=
lied drain argument */
> =A0 =A0 =A0 =A0int =A0 =A0 =A0 =A0 =A0 =A0 =A0s_error; =A0 =A0 =A0 /* cur=
rent error code */
> - =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0s_size; =A0 =A0 =A0 =A0/* si=
ze of storage buffer */
> - =A0 =A0 =A0 int =A0 =A0 =A0 =A0 =A0 =A0 =A0s_len; =A0 =A0 =A0 =A0 /* cu=
rrent length of string */
> + =A0 =A0 =A0 ssize_t =A0 =A0 =A0 =A0 =A0s_size; =A0 =A0 =A0 =A0/* size o=
f storage buffer */
> + =A0 =A0 =A0 ssize_t =A0 =A0 =A0 =A0 =A0s_len; =A0 =A0 =A0 =A0 /* curren=
t length of string */
> =A0#define =A0 =A0 =A0 =A0SBUF_FIXEDLEN =A0 0x00000000 =A0 =A0 =A0/* fixe=
d length buffer (default) */
> =A0#define =A0 =A0 =A0 =A0SBUF_AUTOEXTEND 0x00000001 =A0 =A0 =A0/* automa=
tically extend buffer */
> =A0#define =A0 =A0 =A0 =A0SBUF_USRFLAGMSK 0x0000ffff =A0 =A0 =A0/* mask o=
f flags the user may specify */
> @@ -63,7 +63,7 @@ struct sbuf =A0 *sbuf_new(struct sbuf *, cha
> =A0#define =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 sbuf_new_auto() =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\
> =A0 =A0 =A0 =A0sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND)
> =A0void =A0 =A0 =A0 =A0 =A0 =A0sbuf_clear(struct sbuf *);
> -int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_setpos(struct sbuf *, int);
> +int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_setpos(struct sbuf *, ssize_t);
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_bcat(struct sbuf *, const void *, siz=
e_t);
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_bcpy(struct sbuf *, const void *, siz=
e_t);
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_cat(struct sbuf *, const char *);
> @@ -75,11 +75,11 @@ int =A0 =A0 =A0 =A0 =A0sbuf_vprintf(struct sbuf *, co=
nst
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_putc(struct sbuf *, int);
> =A0void =A0 =A0 =A0 =A0 =A0 =A0sbuf_set_drain(struct sbuf *, sbuf_drain_f=
unc *, void *);
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_trim(struct sbuf *);
> -int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_error(struct sbuf *);
> +int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_error(const struct sbuf *);
> =A0int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_finish(struct sbuf *);
> =A0char =A0 =A0 =A0 =A0 =A0 *sbuf_data(struct sbuf *);
> -int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_len(struct sbuf *);
> -int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_done(struct sbuf *);
> +ssize_t =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 sbuf_len(struct sbuf *);
> +int =A0 =A0 =A0 =A0 =A0 =A0 sbuf_done(const struct sbuf *);
> =A0void =A0 =A0 =A0 =A0 =A0 =A0sbuf_delete(struct sbuf *);
>
> =A0#ifdef _KERNEL
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTin15ap=L5q6Ji45B8-EQm9Gg7q8qQ>