Re: Article: NuttX for PinePhone: The First Year

2023-06-19 Thread Tomek CEDRO
On Tue, Jun 20, 2023 at 4:53 AM Lee, Lup Yuen wrote:
> One year ago we started porting NuttX to PinePhone. Let’s look back and
> talk about…
> (..)
> https://lupyuen.codeberg.page/articles/pinephone2.html

CONGRATZ!!! :-)

-- 
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info


Article: NuttX for PinePhone: The First Year

2023-06-19 Thread Lee, Lup Yuen
One year ago we started porting NuttX to PinePhone. Let’s look back and
talk about…

1. The Features that we’ve implemented
2. Our Plans for the future
3. Why we might move to a RISC-V Tablet!

Check out the article here...

https://lupyuen.codeberg.page/articles/pinephone2.html

Lup


Re: sendfile() with zero size

2023-06-19 Thread Fotis Panagiotopoulos
I just tried the exact same code in Linux.
(It's an FTP client).

In Linux, if sendfile() is called with 0 size, then it immediately returns
zero.
No traffic is generated on the network at all.

I think this is simple & sane behavior to adapt in NuttX.

On Mon, Jun 19, 2023 at 4:02 AM Petro Karashchenko <
petro.karashche...@gmail.com> wrote:

> The sendfile() description across the OSes is not the same. The FreeBSD
> version https://man.freebsd.org/cgi/man.cgi?sendfile(2) for example has
> words "The nbytes argument specifies how many bytes of the file should be
> sent, with 0 having the special meaning of send until the end of file has
> been
> reached" while Linux version does not states anything about zero count, so
> this seems to be "system defined". We can try to experiment with the Linux
> version to see how zero bytes count is handled.
>
> Best regards,
> Petro
>
> On Sun, Jun 18, 2023, 11:10 PM Fotis Panagiotopoulos 
> wrote:
>
> > Hi Alan,
> >
> > Thanks for checking this out.
> >
> > The resources you linked indicate (correctly) that a TCP segment may
> have 0
> > data size.
> > But also that usually this is not allowed for the users? I don't know, I
> > don't intend to use this.
> >
> > However, sendfile (not the plain send) would be completely meaningless
> with
> > a 0 size, I think.
> > Currently, NuttX will not send anything on the wire with size set to 0.
> Not
> > even an empty TCP segment.
> >
> > I don't really want to change the way it works, only improve its
> behavior.
> > As it is right now, resources are wasted, and the cryptic EAGAIN makes
> > troubleshooting harder.
> >
> > But what's best? Return zero? Change errno?
> >
> > On Sun, Jun 18, 2023 at 10:13 PM Alan C. Assis 
> wrote:
> >
> > > Suggest, try to run you same application with this issue on Linux.
> > >
> > > I'm expecting at least a similar error on Linux.
> > >
> > > BR,
> > >
> > > Alan
> > >
> > > On 6/18/23, Alan C. Assis  wrote:
> > > > Hi Fotis,
> > > >
> > > > On 6/18/23, Fotis Panagiotopoulos  wrote:
> > > >> Hello,
> > > >>
> > > >> Due to a bug in my application, the code tried to use sendfile()
> with
> > > >> zero
> > > >> size.
> > > >>
> > > >> As I see, sendfile() will happily proceed, and it will block here:
> > > >>
> > https://github.com/apache/nuttx/blob/master/net/tcp/tcp_sendfile.c#L523
> > > >>
> > > >> Obviously, it will never manage to send any data (as the requested
> > size
> > > >> is
> > > >> 0),
> > > >> and after the timeout expires, it will return EAGAIN.
> > > >>
> > > >
> > > > Good finding!
> > > >
> > > > BTW, that is the default timeout value?
> > > >
> > > > I think conn->sconn.s_sndtimeo is only defined when people enable the
> > > > CONFIG_NET_SOCKOPTS.
> > > >
> > > >> This seems a bit wrong to me.
> > > >> Why not return immediately, but instead wait for the (inevitable)
> > > >> timeout?
> > > >> Why not return a more meaningful error code, or maybe just 0?
> > > >>
> > > >
> > > > I was going to suggest avoid sending a packet with 0 byte, but it is
> > > > supported:
> > > > https://www.quora.com/Can-TCP-send-0-byte-packets
> > > > https://github.com/golang/go/issues/10940
> > > >
> > > > See, technically it is not an error! :-)
> > > >
> > > >> I couldn't find what the standards dictate for this edge case, so
> > maybe
> > > >> the
> > > >> current behavior is correct.
> > > >>
> > > >> What do you think?
> > > >>
> > > >
> > > > I think it is correct, but most servers will just ignore it and you
> > > > will end-up with a timeout.
> > > >
> > > > BR,
> > > >
> > > > Alan
> > > >
> > >
> >
>