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>