On Wed, 2013-06-05 at 18:46 +0300, Eliezer Tamir wrote: > On 05/06/2013 18:39, Eric Dumazet wrote: > > On Wed, 2013-06-05 at 18:30 +0300, Eliezer Tamir wrote: > >> On 05/06/2013 18:21, Eric Dumazet wrote: > > >>> It would also make sense to give end_time as a parameter, so that the > >>> polling() code could really give a end_time for the whole duration of > >>> poll(). > >>> > >>> (You then should test can_poll_ll(end_time) _before_ call to > >>> ndo_ll_poll()) > >> > >> how would you handle a nonblocking operation in that case? > >> I guess if we have a socket option, then we don't need to handle none > >> blocking any diffrent, since the user specified exactly how much time to > >> waste polling. right? > > > > If the thread already spent 50us in the poll() system call, it for sure > > should not call any ndo_ll_poll(). This makes no more sense at this > > point. > > what about a non-blocking read from a socket? > Right now we assume this means poll only once since the application will > repeat as needed. > > maybe add a "once" parameter that will cause sk_poll_ll() to ignore end > time and only try once?
extern bool __sk_poll_ll(struct sock *sk, cycles_t end); static inline bool sk_poll_ll(struct sock *sk, bool nonblock) { return __sk_poll_ll(sk, nonblock, ll_end_time()); } In the poll() code, we should call ll_end_time() once, even if we poll 1000 fds. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/