29 Commits

Author SHA1 Message Date
Sebastian Huber
94b5368388 Avoid malloc() in getsockaddr()
The getsockaddr() function is used to allocate a struct sockaddr of the
right length and initialize it with userspace provided data.  It is used
for the connect(), bind() and sendit() family functions.  In particular,
the sendit() function is used by the UDP send functions.  This means
each UDP send needs a malloc() and free() invocation.  This is a
performance problem in RTEMS (first-fit heap) and may lead to heap
fragmentation.  Replace the malloc() allocation with a stack allocation.
This requires SOCK_MAXADDRLEN (= 255) of additional stack space for
libbsd.

A further optimization would be to get rid of the stack copy of the
socket address.  However, this would require to check each consumer of
the address to ensure that it is not modified.
2018-07-04 07:20:37 +02:00
Sebastian Huber
b03a1c0b59 Fix file descriptor reference counting in accept()
Update #3132.
2017-11-15 13:25:28 +01:00
Sebastian Huber
72d5fa11a8 Fix reference counting for file descriptors
Update #3132.
2017-11-10 11:01:54 +01:00
Sebastian Huber
894c965d95 Support reference counting for file descriptors
Close #3132.
2017-09-15 12:46:57 +02:00
Sebastian Huber
3c967ca238 Use <sys/lock.h> provided by Newlib 2017-06-08 13:20:09 +02:00
Sebastian Huber
02373194fe Update due to Newlib 2017-06-07 changes
The following files are now provided by Newlib:

  * arpa/inet.h
  * net/if.h
  * netinet/in.h
  * netinet/tcp.h
  * sys/socket.h
  * sys/uio.h
  * sys/un.h

The <sys/param.h> and <sys/cpuset.h> are now compatible enough to be
used directly.

Update #2833.
2017-06-08 13:19:54 +02:00
Sebastian Huber
de8a76da2f Update to FreeBSD head 2017-04-04
Git mirror commit 642b174daddbd0efd9bb5f242c43f4ab4db6869f.
2017-04-04 14:46:23 +02:00
Sebastian Huber
0732183638 Fix SOCK_CLOEXEC with socket() and socketpair()
Remove SOCK_CLOEXEC flag to get a valid socket type, e.g. to avoid a
EPROTOTYPE in case of socket(..., SOCK_DGRAM | SOCK_CLOEXEC, ...).
2017-03-14 07:15:34 +01:00
Sebastian Huber
75b706fde4 Update to FreeBSD head 2016-12-10
Git mirror commit 80c55f08a05ab3b26a73b226ccb56adc3122a55c.
2017-01-10 09:53:34 +01:00
Sebastian Huber
c40e45b75e Update to FreeBSD head 2016-08-23
Git mirror commit 9fe7c416e6abb28b1398fd3e5687099846800cfd.
2017-01-10 09:53:31 +01:00
Sebastian Huber
7d0050d921 Fix fp initializaiton in kern_sendit()
Bug introduced by 22257c7d81148e5b78027116e07627a54f4efb95.
2016-04-25 11:26:58 +02:00
Sebastian Huber
22257c7d81 Avoid use of cap_rights_t 2016-04-18 15:06:41 +02:00
Sebastian Huber
dd96574e45 SOCKETPAIR(2): Port to RTEMS 2015-11-16 09:52:50 +01:00
Sebastian Huber
5c0aa976d3 Add zerocopy sendto 2015-02-13 10:34:20 +01:00
Sebastian Huber
7eeb079d84 Update to FreeBSD 9.3 2015-02-13 10:34:19 +01:00
Sebastian Huber
66659ff1ad Update to FreeBSD 9.2 2013-11-11 10:08:08 +01:00
Sebastian Huber
0a57e1db23 Reduce divergence from FreeBSD sources 2013-11-11 10:08:06 +01:00
Sebastian Huber
f244de9638 Rename rtems-bsd-config.h
Rename rtems-bsd-config.h in rtems-bsd-kernel-space.h.
2013-11-11 10:08:04 +01:00
Sebastian Huber
af5333e0a0 Update to FreeBSD 8.4 2013-11-04 15:28:21 +01:00
Sebastian Huber
9d9bfaff8d Use send/recv functions from FreeBSD
Use recvfrom(), recvmsg(), sendto() and sendmsg() from FreeBSD.
2013-10-31 13:18:48 +01:00
Sebastian Huber
8989c110f5 Use getsockname() from FreeBSD 2013-10-31 13:18:48 +01:00
Sebastian Huber
0beab1e86a Use getpeername() from FreeBSD 2013-10-31 13:18:48 +01:00
Sebastian Huber
ac78dd2440 Use getsockopt() and setsockopt() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
7c2b59c831 Use accept() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
7c3625139f Use listen() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
6676de488a Use connect() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
468b08e553 Use bind() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
6ffb9b9e27 Use shutdown() from FreeBSD 2013-10-31 13:18:47 +01:00
Sebastian Huber
caf8eded60 Import socket() implementation from FreeBSD
Add new test syscalls01.
2013-10-31 13:18:47 +01:00