picotcp tftp support [was Adding IPv4 multicast support]

Daniele Lacamera daniele.lacamera at tass.be
Tue Jul 15 02:31:29 PDT 2014


On Tue, Jul 15, 2014 at 9:01 AM, Antony Pavlov <antonynpavlov at gmail.com> wrote:
>
> barebox uses POSIX file interface for working with tftp.
>
> We have to provide these basic functions (see fs/tftp.c):
>
> static struct fs_driver_d tftp_driver = {
>         .open      = tftp_open,
>         .read      = tftp_read,
>         .write     = tftp_write,
>         .close     = tftp_close,
>         /* Other functions for unlink, truncate,
>            mkdir, rmdir, stat, opendir, lseek, create
>            are not so important. */
> };
>
> So **fs/tftp.c code is driven** by user code that
> uses file interface for accessing to the files
> on tftp-server.
>
> AFAI understand picotcp tftp support uses event-driven interface
> so **user code is driven** by picotcp tftp support code.
>
> How we can use picotcp tftp support for realization
> of POSIX file interface?

Hi Antony,

I will be able to provide such an interface by using a similar
approach to what you used for ping (so via net_poll() routine called
in a loop), assuming that your posix-like interface expects blocking
calls for read/write operations.

The loop will also be interruptible via CTRL+C.

I would like to know more about this approach though, are you
implementing client only functionality (get/put) or do you want to be
able to listen for client "connections" as well? How is the connection
initiated (I see there is a tftp_probe function that's not included in
the API group)?

Thanks,

/d



More information about the barebox mailing list