cvs commit: src/sys/i386/include atomic.h
jhb at freebsd.org
Tue Mar 28 18:27:57 UTC 2006
On Tuesday 28 March 2006 11:30, Dag-Erling Smørgrav wrote:
> John Baldwin <jhb at freebsd.org> writes:
> > On Tuesday 28 March 2006 09:34, Dag-Erling Smorgrav wrote:
> > > Log:
> > > Use wrapper macros for atomic pointer operations in order to perform the
> > > correct casts. This should probably be merged to other architectures.
> > It should really be uintptr_t rather than u_int.
> I realize that, but I wasn't sure I could safely assume that uintptr_t
> is defined - and by definition, at this point in the code, we know
> that u_int is compatible with a pointer.
Hmm, I think you can assume that because sparc64's atomic.h uses
uintptr_t. I'd prefer it as it would reduce diff's with other archs
as well (I tend to do diff's between files in sys/i386 and sys/amd64).
One reason for not having the casts, btw, is that you lose type checking.
Requiring the caller to add the casts in places that aren't operating
on uintptr_t's (note that the mutex and rwlock code both do operate on
uintptr_t's) should force them to have to think (somewhat) and make sure
they are really operating on a pointer and not an int, etc. Maybe that
level of typechecking isn't needed and perhaps I'm being overly paranoid
due to all the (older) code that assumes sizeof(int) == sizeof(ptr).
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the cvs-src