Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Feb 2012 02:48:44 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Sergey Kandaurov <pluknet@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r230808 - in head/sys: dev/ie sys
Message-ID:  <20120201022150.N2889@besplex.bde.org>
In-Reply-To: <201201311300.q0VD0eWM036780@svn.freebsd.org>
References:  <201201311300.q0VD0eWM036780@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 31 Jan 2012, Sergey Kandaurov wrote:

> Log:
>  Isolate v_caddr_t in the ie driver.
>
>  Submitted by:	Bruce Evans on net@

Thanks.

> ...
> Modified: head/sys/sys/types.h
> ==============================================================================
> --- head/sys/sys/types.h	Tue Jan 31 12:57:21 2012	(r230807)
> +++ head/sys/sys/types.h	Tue Jan 31 13:00:40 2012	(r230808)
> @@ -73,7 +73,6 @@ typedef	quad_t *	qaddr_t;
>
> typedef	char *		caddr_t;	/* core address */
> typedef	const char *	c_caddr_t;	/* core address, pointer to const */
> -typedef	__volatile char *v_caddr_t;	/* core address, pointer to volatile */
>
> #ifndef _BLKSIZE_T_DECLARED
> typedef	__blksize_t	blksize_t;

c_caddr_t is a bit harder to fix or isolate.  I removed it, then fixed
the things that broke, but only the ones that were used in my normal
kernel (or perhaps GENERIC).  These are most mchain and its uses:
- mbchain.9, mchain.9 (these also have a bogus include of uio.h)
- nwfs_subr.c (remove the bogus casts to c_caddr_t and also many more
   to caddr_t, after fixing APIs).  This is barely maintained, and might
   go away for other reasons (it needs Giant?).
- subr_mchain.c, and headers: change APIs to use const void * instead of
   c_caddr_t, and void * instead of caddr_t; add casts to const char *
   or char * to access or do pointer arithmetic on these void *.
- subr_mbuf.c: like subr_mchain.c, but only 1 place to unbreak.
- ncp_rq.c: like nwfs_subr.c, but less to change.
- smb_subr.c: change just 1 API to take const void * and void * instead
   of c_caddr_t etc., and add casts.  The casts are now to const char **
   and char **.  That's 1 more star than before, so I don't see how this
   worked or works.
- linker.h: the same bugs affect the "opaque" symbol linker_sym_t.  We
   have to peer inside it to know that it is a pointer and modify it
   to make it a pointer to const.  We use c_linker_sym_t for the latter,
   and since it is bogusly a caddr_t, we used c_caddr_t for the latter.
   I changed the latter to use const char *, but didn't try to fix the
   bogus opaqueness.
- mchain.h: one of the headers affected.  Also add a forward
   declaration of struct uio to it, so that uio.h isn't prerequisite,
   and fix the unsorting of the forward declarations.
- types.h: remove c_caddr_t.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120201022150.N2889>