summaryrefslogtreecommitdiff
path: root/libc/inet/socketcalls.c
AgeCommit message (Collapse)Author
2024-02-25Add support for using time64 on big-endian machines.Dmitry Chestnykh
For BE architectures there is one significant difference in comparison with time64 support for little-endian architectures like ARMv7. The difference is that we strictly need to pass two 64bit values to system calls because Linux Kernel internally uses `struct __kernel_timespec` and similar, which consists of two 64bit fields. For this reason many files have been changed to convert pointers to timespec-family structures (mixed of 64bit and 32bit values) to the pointer of the similar but 64bit-only structures for using as system calls args. This is general prerequisite for any BE architecture. Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
2024-02-22Introduce time64 support.Dmitry Chestnykh
This patch introduces *time64 syscalls support for uClibc-ng. Currently the redirection of syscalls to their *time64 analogs is fully supported for 32bit ARM (ARMv5, ARMv6, ARMv7). The main changes that take effect when time64 feature is enabled are: - sizeof(time_t) is 8. - There is a possibility os setting date beyond year 2038. - some syscalls are redirected: clock_adjtime -> clock_adjtime64 clock_getres -> clock_getres_time64 clock_gettime -> clock_gettime64 clock_nanosleep -> clock_nanosleep_time64 clock_settime -> clock_settime64 futex -> futex_time64 mq_timedreceive -> mq_timedreceive_time64 mq_timedsend -> mq_timedsend_time64 ppoll -> ppoll_time64 pselect6 -> pselect6_time64 recvmmsg -> recvmmsg_time64 rt_sigtimedwait -> rt_sigtimedwait_time64 sched_rr_get_interval -> sched_rr_get_interval_time64 semtimedop -> semtimedop_time64 timer_gettime -> timer_gettime64 timer_settime -> timer_settime64 timerfd_gettime -> timerfd_gettime64 timerfd_settime -> timerfd_settime64 utimensat -> utimensat_time64. - settimeofday uses clock_settime (like in glibc/musl). - gettimeofday uses clock_gettime (like in glibc/musl). - nanosleep uses clock_nanosleep (like in glibc/musl). - There are some fixes in data structures used by libc and kernel for correct data handling both with and without enabled time64 support. Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
2018-10-20do not expose recvmmsg/sendmmsg for unsupported kernelsWaldemar Brodkorb
2017-11-02convert accept4() to use cancel.h macrosWaldemar Brodkorb
2017-10-08socketcall: fix compile issue with older Linux kernelWaldemar Brodkorb
2017-10-01recvmmsg/sendmmsg: add recvmmsg sendmmsg support.Guo Ren
The recvmmsg and sendmmsg is very important for UDP stream application. If we only use recvmsg for UDP stream, it will only copy one mtu size of data in a syscall. And recvmmsg copy as many as you want in a syscall. So recvmmsg is more efficient,and some applications will depends on the recvmmsg and sendmmsg, eg: UDP media stream player. Signed-off-by: Guo Ren <ren_guo@c-sky.com>
2015-11-13i386: use socketcall even if newer linux exposes direct syscallsWaldemar Brodkorb
The changeset 9dea5dc921b5f4045a18c63eb92e84dc274d17eb in the Linux kernel expose the direct syscalls for sockets. For example udhcpc then will use sendto syscall directly and get an EINVAL error. Disable direct syscalls as it was done for SPARC in the past. Musl and GNU libc are not affected, as they already disable direct socket syscalls on i386. Reported-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-08-18unbreak networking code for sparcWaldemar Brodkorb
This commit 1e2e4ac6193ffe0900bd392fa3c596883771eb34 breaks networking on sparc systems. In Linux the socket functions are declared, but not implemented and must be routed through socketcall(). Tested via Qemu 2.0.0. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2013-01-26libc/inet: pull in stddef.h for NULLMike Frysinger
Fixes a build error: In file included from libc/inet/recv.c:8:0: libc/inet/socketcalls.c: In function '__recv_nocancel': libc/inet/socketcalls.c:203:57: error: 'NULL' undeclared (first use in this function) Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-06-15socketcalls.c: rewrite to use cancel.hPeter S. Mazinger
__socketcall.c: remove guard, we definitely need this syscall Re-added guard plus added comment (Bernhard) Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2012-06-15socketcalls.c: prefer using recvfrom in recv and sendto in sendPeter S. Mazinger
Make socketcall the last alternative. Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2012-06-15remove __FORCE_GLIBCPeter S. Mazinger
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-05-11accept4: Implement cancellationBernhard Reutner-Fischer
.. and add proper prototype, move it into it's own obj and other such cleanups. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-05-11Implement accept4 system call.Thierry Reding
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-09-17libc: Handle cancellation in non multiplexed socket callsCarmelo Amoroso
For those archs that provide non multiplexed socket calls it possible to implement the lib C wrappers without calling the multi-purpose __socketcall. For a subset of these functions that are cancellation point, it needs to correctly handle cancellation. Signed-off-by: Francesco Rundo <francesco.rundo@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2009-10-17whitespace fixesAustin Foxley
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2009-10-17cancellation support for a large amount of the required syscallsAustin Foxley
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2009-09-18trim Experimentally off and uncommented hiddenBernhard Reutner-Fischer
sed -i -e '/Experimentally off - /d' $(grep -rl "Experimentally off - " *) sed -i -e '/^\/\*[[:space:]]*libc_hidden_proto(/d' $(grep -rl "libc_hidden_proto" *) should be a nop Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2009-02-25Reinstate __libc_foo's needed for linuxthreads.old.Denis Vlasenko
Now they are only enabled if linuxthreads.old are selected.
2008-12-10*: remove some __libc_XXX functions:Denis Vlasenko
__libc_accept __libc_close __libc_connect __libc_creat __libc_creat64 __libc_fsync __libc_lseek __libc_lseek64 __libc_msync __libc_nanosleep __libc_open __libc_open64 __libc_pause __libc_read __libc_readv __libc_recv __libc_recvfrom __libc_recvmsg __libc_send __libc_sendmsg __libc_sendto __libc_tcdrain __libc_wait __libc_waitpid __libc_write __libc_writev They were removed from glibc 1 May 2004: http://sources.redhat.com/ml/libc-hacker/2004-05/msg00001.html
2008-11-20Last portion of libc_hidden_proto removal.Denis Vlasenko
Appears to build fine (several .configs tried)
2008-11-20next portion of libc_hidden_proto removalDenis Vlasenko
2008-10-22- remove superfluous ';'. No objcode changes.Bernhard Reutner-Fischer
2008-06-03- adds several config-options to allow for turning off certain featuresBernhard Reutner-Fischer
like o UCLIBC_HAS_GNU_ERROR o UCLIBC_HAS_BSD_ERR o UCLIBC_HAS_PTY o UCLIBC_HAS_GETPT (1) o UCLIBC_SYSCALL_STUBS o UCLIBC_SYSCALL_STUB_WARNING o UCLIBC_LINUX_SPECIFIC (2) o UCLIBC_BSD_SPECIFIC (3) o UCLIBC_NTP_LEGACY (4) o UCLIBC_SV4_DEPRECATED (5) o UCLIBC_HAVE_REALTIME (6) o UCLIBC_HAVE_ADVANCED_REALTIME (7) o UCLIBC_HAVE_EPOLL (8) o UCLIBC_HAVE_XATTR (9) o UCLIBC_HAVE_PROFILING (10) (1) make non-standard getpt optional and implement standard posix_openpt (2) fstatfs(), inotify_*(), ioperm(), iopl(), madvise(), modify_ldt(), personality() ppoll(), setresuid() (3) mincore(), getdomainname(), setdomainname() (4) ntp_adjtime(), ntp_gettime() aliases (5) ustat() [use statfs(2) in your code instead] (6) All marked as "(REALTIME)" in SUSv3 (7) All marked as "(ADVANCED REALTIME)" in SUSv3 (8) epoll_create(), epoll_ctl(), epoll_wait() (9) all Extended Attributes (10) helpers for gcc's -finstrument-functions - Fixes _dl_exit() - Implements sleep(3) for !UCLIBC_HAVE_REALTIME - Implements usleep(3) for !UCLIBC_HAVE_REALTIME - adds #warning about incorrect posix_fadvise{,64}() - removes unused and unwanted uselib() Net outcome is that an allnoconfig with HAVE_SHARED is now about 88k instead of formerly 130k.
2006-02-13Weaken all that I remember being used in libpthreadPeter S. Mazinger
2006-01-26Get rid of missing prototype warningsPeter S. Mazinger
2006-01-24Convert all the strong_aliases to weak that are cancelable in libpthreadPeter S. Mazinger
2006-01-15make gcc4 happy w/ hidden_def/proto, correct some typosPeter S. Mazinger
2006-01-14make DODEBUG=y happy, update sysdeps/common/* copyrightPeter S. Mazinger
2006-01-14hidden_def/hidden_proto: convert all users (I hope) termios split, add some ↵Peter S. Mazinger
missing headers, other jump relocs removed
2006-01-08fix warnings when __NR_socketcall is not defined and building recv()Mike Frysinger
2005-12-15silly bugEric Andersen
2005-12-09Implement hidden listen, use the hidden listen/acceptPeter S. Mazinger
2005-12-08Use __sendto in __libc_send, small correctionPeter S. Mazinger
2005-12-08Similar impl. of __libc_x using hidden_weak_alias, hope threads work w/ itPeter S. Mazinger
2005-12-08Again rpc ;-( , all *inet*, *addr*Peter S. Mazinger
2005-12-07Hide morePeter S. Mazinger
2005-11-26100 JUMP relocs less (remaining 431) by hiding internally used onesPeter S. Mazinger
2005-06-29if both __NR_send and __NR_socketcall do not exist, fall back to __NR_sendto ↵Mike Frysinger
(same goes for recv/recvfrom)
2005-02-13x86_64 fixes: __NR_socketcall doesnt exist, nor does __NR_recv / __NR_send ↵Mike Frysinger
... so dont try using socketcall() unless the system call exists
2002-07-07Cleanup namespace leaks by prepending __ to global stuff toEric Andersen
indicate it is (alledgedly) private. -Erik
2002-06-12Yipe. As Joseph Chiu noticed, sockvec is supposed to be an int*Eric Andersen
not an int.
2002-05-12Fix some silly bugs and type problemsEric Andersen
2002-05-11Fix the defines which I had backwardsEric Andersen
2002-05-11Majorly rework to also cope with architectures which do not useEric Andersen
the socketcall system call, but instead implement each fundamental networking function directly as a system call. -Erik
2002-02-13A number of naming updates in preparation for adding inEric Andersen
proper threading. Most of this is from Stefan Soucek, with additions and changes as needed from me.
2001-11-21Adjust naming for __FORCE_GLIBC__ to __FORCE_GLIBC and addEric Andersen
support for __FORCE_NOGLIBC per Brian Stafford <brian.stafford@office-logic.com>
2001-09-27Update to accomodate the header file changesEric Andersen
2001-06-12Silence a few warnings.Eric Andersen
2001-02-05Update networking includes.Eric Andersen