Re: svn commit: r268494 - in head: lib/libsbuf sys/kern sys/sys
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 On 07/10/14 06:08, Pietro Cerutti wrote: > Author: gahr (ports committer) Date: Thu Jul 10 13:08:51 2014 New > Revision: 268494 URL: > http://svnweb.freebsd.org/changeset/base/268494 > > Log: Implement Short/Small String Optimization in SBUF(9) and > change lengths and positions in the API from ssize_t and int to > size_t. > > CR: D388 Approved by: des, bapt Please fix the ABI breakage by creating the compatibility shims or revert this change for now. Once a library have converted to use versioned symbols, we are promising not to break ABI compatibility and it's not Okay to break that promise. Cheers, - -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -BEGIN PGP SIGNATURE- Version: GnuPG v2.0 iQIcBAEBCgAGBQJT0u+vAAoJEJW2GBstM+nsokoP/jz6o84f/NAwlWeMjBdYEXBk vYBLZN8tWNNwppykdkiFps67HYBgaVI2rIKHfcIRaNT4BG1MdQ78jaes6NEukbBz wJAeggpsJh8DuzfBEKDuXSG7VGfdrjaPa5PwfANgnwxFy8aagZA1xAyy6l9lUIqq J+hWtmIbZSttn3nlyYQXVjcsCaOaCAn4HMBdfAMNV+4LJtNNDGhrwL5kUncLAru3 9PdFqgjJPuvbaI10L6vSIbthHnAj8pVtNsRj7W54zjkMvhfweT66hajDNMvmgc5O 9BcFNqCmtemqpVDf3gRPfwTIaoPgbHnJnZPrJ+Ria2D/S3HnFRr96wCGYiy6yP1x G9Raf8/6qKDZ3WxjCJIOly6KVbKQxroy7SL59SW1h5LX9mgq5lqrkDeL9lRiLzwB 7LNzrGfvVUsufnLy0DQk9tiMGx4UTTjUFYcWWGK6m214lxJ/4+Zv6DlYU4m21Teg OqsuL/W78j0/1x0j+d7tHP4uucISQHF8suehXhGTbdpio7Mi4G6SzeZfqpYXW6HP ZwRvDJuiG8Q6o1V3Uhf+HvvEifjzm4779nycSyzq7T2qlRRU9Gs6rdJmRcR6E+pR 1iVQPNSDh4M/6GQ/NySxY8Xd1pdSvYumDzjh12RULY2agHuccYRhkRQWLLBqtV/U wrS+hdXjlum9ZCoZRsn6 =FR8o -END PGP SIGNATURE- ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r268494 - in head: lib/libsbuf sys/kern sys/sys
On Mon, Jul 21, 2014 at 11:07:18AM +0200, Pietro Cerutti wrote: > On 2014-Jul-18, 18:47, Bryan Drewery wrote: > > On 2014-07-10 08:08, Pietro Cerutti wrote: > > > Author: gahr (ports committer) > > > Date: Thu Jul 10 13:08:51 2014 > > > New Revision: 268494 > > > URL: http://svnweb.freebsd.org/changeset/base/268494 > > > > > > Log: > > > Implement Short/Small String Optimization in SBUF(9) and change > > > lengths and > > > positions in the API from ssize_t and int to size_t. > > > > > > CR: D388 > > > Approved by:des, bapt > > > > > > Modified: > > > head/lib/libsbuf/Makefile > > > head/sys/kern/subr_sbuf.c > > > head/sys/sys/sbuf.h > > > > > > Modified: head/lib/libsbuf/Makefile > > > == > > > --- head/lib/libsbuf/Makefile Thu Jul 10 13:04:52 2014 > > > (r268493) > > > +++ head/lib/libsbuf/Makefile Thu Jul 10 13:08:51 2014 > > > (r268494) > > > @@ -4,7 +4,7 @@ LIB= sbuf > > > SHLIBDIR?= /lib > > > SRCS=subr_sbuf.c > > > > > > -SHLIB_MAJOR = 6 > > > +SHLIB_MAJOR = 7 > > > > > > SYMBOL_MAPS=${.CURDIR}/Symbol.map > > > VERSION_DEF= ${.CURDIR}/Version.def > > > > > > > We have symbol versioning in libsbuf. Shouldn't need to bump the > > version. Just need to add a compat function for everything. It would be > > a lot of work, but bumping for ssize_t->size_t seems gratuitous to me. > > The bump was due mainly to the addition of the s_static_buf field to the > sbuf struct. So, how this invalidates the point of not breaking the ABI ? We do not bump .so version for versioned libraries. For all symbols (functions) which are affected by the change, the compat shims in the old namespace must be provided. pgpmttjOL06kP.pgp Description: PGP signature
Re: svn commit: r268494 - in head: lib/libsbuf sys/kern sys/sys
On 2014-Jul-18, 18:47, Bryan Drewery wrote: > On 2014-07-10 08:08, Pietro Cerutti wrote: > > Author: gahr (ports committer) > > Date: Thu Jul 10 13:08:51 2014 > > New Revision: 268494 > > URL: http://svnweb.freebsd.org/changeset/base/268494 > > > > Log: > > Implement Short/Small String Optimization in SBUF(9) and change > > lengths and > > positions in the API from ssize_t and int to size_t. > > > > CR: D388 > > Approved by: des, bapt > > > > Modified: > > head/lib/libsbuf/Makefile > > head/sys/kern/subr_sbuf.c > > head/sys/sys/sbuf.h > > > > Modified: head/lib/libsbuf/Makefile > > == > > --- head/lib/libsbuf/Makefile Thu Jul 10 13:04:52 2014 > > (r268493) > > +++ head/lib/libsbuf/Makefile Thu Jul 10 13:08:51 2014 > > (r268494) > > @@ -4,7 +4,7 @@ LIB=sbuf > > SHLIBDIR?= /lib > > SRCS= subr_sbuf.c > > > > -SHLIB_MAJOR= 6 > > +SHLIB_MAJOR= 7 > > > > SYMBOL_MAPS=${.CURDIR}/Symbol.map > > VERSION_DEF= ${.CURDIR}/Version.def > > > > We have symbol versioning in libsbuf. Shouldn't need to bump the > version. Just need to add a compat function for everything. It would be > a lot of work, but bumping for ssize_t->size_t seems gratuitous to me. The bump was due mainly to the addition of the s_static_buf field to the sbuf struct. -- Pietro Cerutti The FreeBSD Project g...@freebsd.org PGP Public Key: http://gahr.ch/pgp pgpfoYyyeQK1H.pgp Description: PGP signature
Re: svn commit: r268494 - in head: lib/libsbuf sys/kern sys/sys
On 2014-07-10 08:08, Pietro Cerutti wrote: Author: gahr (ports committer) Date: Thu Jul 10 13:08:51 2014 New Revision: 268494 URL: http://svnweb.freebsd.org/changeset/base/268494 Log: Implement Short/Small String Optimization in SBUF(9) and change lengths and positions in the API from ssize_t and int to size_t. CR: D388 Approved by: des, bapt Modified: head/lib/libsbuf/Makefile head/sys/kern/subr_sbuf.c head/sys/sys/sbuf.h Modified: head/lib/libsbuf/Makefile == --- head/lib/libsbuf/Makefile Thu Jul 10 13:04:52 2014(r268493) +++ head/lib/libsbuf/Makefile Thu Jul 10 13:08:51 2014(r268494) @@ -4,7 +4,7 @@ LIB=sbuf SHLIBDIR?= /lib SRCS= subr_sbuf.c -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 SYMBOL_MAPS=${.CURDIR}/Symbol.map VERSION_DEF= ${.CURDIR}/Version.def We have symbol versioning in libsbuf. Shouldn't need to bump the version. Just need to add a compat function for everything. It would be a lot of work, but bumping for ssize_t->size_t seems gratuitous to me. -- Regards, Bryan Drewery ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
svn commit: r268494 - in head: lib/libsbuf sys/kern sys/sys
Author: gahr (ports committer) Date: Thu Jul 10 13:08:51 2014 New Revision: 268494 URL: http://svnweb.freebsd.org/changeset/base/268494 Log: Implement Short/Small String Optimization in SBUF(9) and change lengths and positions in the API from ssize_t and int to size_t. CR: D388 Approved by: des, bapt Modified: head/lib/libsbuf/Makefile head/sys/kern/subr_sbuf.c head/sys/sys/sbuf.h Modified: head/lib/libsbuf/Makefile == --- head/lib/libsbuf/Makefile Thu Jul 10 13:04:52 2014(r268493) +++ head/lib/libsbuf/Makefile Thu Jul 10 13:08:51 2014(r268494) @@ -4,7 +4,7 @@ LIB=sbuf SHLIBDIR?= /lib SRCS= subr_sbuf.c -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 SYMBOL_MAPS=${.CURDIR}/Symbol.map VERSION_DEF= ${.CURDIR}/Version.def Modified: head/sys/kern/subr_sbuf.c == --- head/sys/kern/subr_sbuf.c Thu Jul 10 13:04:52 2014(r268493) +++ head/sys/kern/subr_sbuf.c Thu Jul 10 13:08:51 2014(r268494) @@ -152,11 +152,16 @@ static int sbuf_extend(struct sbuf *s, int addlen) { char *newbuf; - int newsize; + size_t newsize; if (!SBUF_CANEXTEND(s)) return (-1); newsize = sbuf_extendsize(s->s_size + addlen); + if (s->s_buf == s->s_static_buf && newsize <= sizeof(s->s_static_buf)) { + s->s_size = sizeof(s->s_static_buf); + return (0); + } + newbuf = SBMALLOC(newsize); if (newbuf == NULL) return (-1); @@ -176,7 +181,7 @@ sbuf_extend(struct sbuf *s, int addlen) * big enough to hold at least length characters. */ static struct sbuf * -sbuf_newbuf(struct sbuf *s, char *buf, int length, int flags) +sbuf_newbuf(struct sbuf *s, char *buf, size_t length, int flags) { memset(s, 0, sizeof(*s)); @@ -195,6 +200,11 @@ sbuf_newbuf(struct sbuf *s, char *buf, i if ((flags & SBUF_AUTOEXTEND) != 0) s->s_size = sbuf_extendsize(s->s_size); + if (s->s_size <= sizeof(s->s_static_buf)) { + s->s_buf = s->s_static_buf; + return (s); + } + s->s_buf = SBMALLOC(s->s_size); if (s->s_buf == NULL) return (NULL); @@ -283,21 +293,19 @@ sbuf_clear(struct sbuf *s) * Effectively truncates the sbuf at the new position. */ int -sbuf_setpos(struct sbuf *s, ssize_t pos) +sbuf_setpos(struct sbuf *s, size_t pos) { assert_sbuf_integrity(s); assert_sbuf_state(s, 0); - KASSERT(pos >= 0, - ("attempt to seek to a negative position (%jd)", (intmax_t)pos)); KASSERT(pos < s->s_size, ("attempt to seek past end of sbuf (%jd >= %jd)", (intmax_t)pos, (intmax_t)s->s_size)); KASSERT(!SBUF_ISSECTION(s), ("attempt to seek when in a section")); - if (pos < 0 || pos > s->s_len) + if (pos > s->s_len) return (-1); s->s_len = pos; return (0); @@ -561,7 +569,8 @@ int sbuf_vprintf(struct sbuf *s, const char *fmt, va_list ap) { va_list ap_copy; - int error, len; + size_t len; + int error; assert_sbuf_integrity(s); assert_sbuf_state(s, 0); Modified: head/sys/sys/sbuf.h == --- head/sys/sys/sbuf.h Thu Jul 10 13:04:52 2014(r268493) +++ head/sys/sys/sbuf.h Thu Jul 10 13:08:51 2014(r268494) @@ -44,8 +44,8 @@ struct sbuf { sbuf_drain_func *s_drain_func; /* drain function */ void*s_drain_arg; /* user-supplied drain argument */ int s_error; /* current error code */ - ssize_t s_size;/* size of storage buffer */ - ssize_t s_len; /* current length of string */ + size_t s_size;/* size of storage buffer */ + size_t s_len; /* current length of string */ #defineSBUF_FIXEDLEN 0x /* fixed length buffer (default) */ #defineSBUF_AUTOEXTEND 0x0001 /* automatically extend buffer */ #defineSBUF_USRFLAGMSK 0x /* mask of flags the user may specify */ @@ -55,6 +55,9 @@ struct sbuf { #defineSBUF_INSECTION 0x0010 /* set by sbuf_start_section() */ int s_flags; /* flags */ ssize_t s_sect_len;/* current length of section */ +#define SBUF_STATIC_LEN64 /* static storage buffer length */ + char s_static_buf[SBUF_STATIC_LEN]; + /* static storage buffer */ }; __BEGIN_DECLS @@ -65,7 +68,7 @@ struct sbuf *sbuf_new(struct sbuf *, cha #define sbuf_new_auto()\