Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Jan 2003 18:54:53 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Jake Burkholder <jake@locore.ca>
Cc:        cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/kern kern_acl.c kern_descrip.c kern_event.c kern_mac.c sys_pipe.c sys_socket.c uipc_socket.c uipc_syscalls.c uipc_usrreq.c vfs_aio.c vfs_syscalls.c vfs_vnops.c src/sys/netgraph ng_socket.c src/sys/sys file.h src/sys/ufs/ffs ...
Message-ID:  <200301120254.h0C2srcS043241@apollo.backplane.com>
References:  <200301120137.h0C1bD0E098037@repoman.freebsd.org> <20030111213259.E212@locore.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
:actually needed is in cases like this: ((struct vnode *)fp->f_data)->v_mount.
:In the majority of cases that I looked at the pointer is assigned to a
:local variable of the correct type first, in which case the cast is almost
:certainly a historical remnant of f_data having type caddr_t.  Removing the
:unnecessary casts in that case I agree with, but changing the type of f_data
:as well I don't agree with at all.

    Well, a good bit of the casts removed also allowed the parenthesis to
    be removed, a couple of split lines could be put back together, and
    generally it has made it more readable.

:This is also a layering violation.  The file layer is not supposed to
:know what the underlying object is.  I understand that the generic pointer
:deals with that, but I don't see how f_data was insufficient and I think
:its wrong to specify in anyway other than void * what the underlying
:object is.

    The structs are there but the structural definitions are not (i.e. there
    is no #include requirement), so I would disagree about it being a 
    layering violation.   Also, nearly all the code that uses struct file
    assumes that f_data is one type or another... in otherwords, there is
    no 'layering' per-say to violate.  Most of the code in kern/* needs to
    know exactly what f_data is.

:I'm not at all happy with this change and I would like some justification
:for it other than to remove casts; in the majority of cases they are
:unnecessary and should have been just removed, and the remaining cases
:would have been better served by first assinging to a local variable of the
:correct type.
:
:I'm really baffled as to why you did this.
:
:Jake

    It's a cleanup.  Ugliness I noticed as I was evaluating how easy it
    would be to add a memory object file type.  I don't see why you believe
    a justification is required other then cleanup and code readability.
    void *'s are things you only use when you need to.  We certainly didn't
    need to here.  How exactly is this commit so bad that you are against it?

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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