NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-sparc64/46652 (sparc fails to load kernel viatftp)

> > Ok, tftp requires own initialization (net_sock in of->f_devdata),
> > but the previous code (using int**) was a bit confusing.
> > 
> > How about passing (struct open_file *) as
> > lib/libsa/tftp.c:tftp_open() does?
> Why do you want to obscure what kind of data gets carried from
> generator to consumer in f_devdata in the tftp case?
> Using int ** is a (poor, but present) type check by the compiler,
> after all.

See actual consumer of the f_devdata, sys/lib/libsa/tftp.c:tftp_open():
__compactcall int
tftp_open(const char *path, struct open_file *f)


        tftpfile->iodesc = io = socktodesc(*(int *)(f->f_devdata));
which indicates what should be initialized.

On the other hand, nfs.c (which also use net_open()) doesn't require
any data in f_devdata at all and it confused me.

> If the reason why it's int ** is too confusing, a comment should be added.
> The code would be less clear to me, not more, if you handed over the
> pointer to the entire open_file struct when all you want to do is set
> one member of it (which is a dedicated "I'm void * so you can stick in
> whatever both ends need", too).

What kind of comment is reasonable for you?
Even if you don't want void *, Why not int * but int **?
I don't see any reason to prefer int **.

Izumi Tsutsui

Home | Main Index | Thread Index | Old Index