In many places we needlessly use `sched_active_thread->pid` whilst we
already have `sched_active_pid` with the same value, and one less
indirection.
`thread_getpid()` is made `static inline` so that there is no penalty in
using this function over accessing `sched_active_pid` directly.
Quoting myself:
> The code of sys/lib/hashtable.c is very badly adapted for embedded
> systems. The used primes are huge, and the limit is entirely
> unrealistic. Why do we ship this file?
In #1564 we came to the conclusion that we don't need this code.
Closes#1564.
This is a malloc-free implementation of the Concise Binary Object
Representation (CBOR) data format for the RIOT-OS.
This implementation mostly stand-alone, and it should be pretty easy to
port to other platforms. We're only using the C STL and some custom
network-related functionaliy which could be easily replaced by depending
on arpa/inet.h.
The CBOR API is straight-forward to use and provides encoding/decoding
functionality for all major C types, such as:
- int
- uint64_t
- int64_t
- float
- double
- char*
- struct tm
- time_t
It is possible to conditionally compile this module via CFLAGS:
- CBOR_NO_SEMANTIC_TAGGING: All semantic-tagging features removed
- CBOR_NO_CTIME: All ctime related features removed
- CBOR_NO_FLOAT: All floating-point related features removed
- CBOR_NO_PRINT: All features depending on printf removed
`tcp_t::stack_size` is only examined by the shell command `ps` and
`DEBUG_PRINT`. For the latter one only if `DEVELHELP` was enabled.
This PR guards the member `tcp_t::stack_size` in `#ifdef DEVELHELP`.
Only if DEVELHELP was activated its value get printed by `ps`.
Closes#1287.
Instead of using differing integer types use kernel_pid_t for process
identifier. This type is introduced in a new header file to avoid
circular dependencies.
This PR converts tabs to white spaces.
The statement I used for the conversion:
```find . -name "*.[ch]" -exec zsh -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;```
Afterwards, I had a quick overview of the converted files to prevent odd indentation.
It seems that there are corner cases where a vtimer was removed, but
still there comes a hwtimer callback. This is a bug somewhere in the
vtimer or hwtimer. If there still was a vtimer set, then the next one
gets called before its time. If there was no other vtimer scheduled,
then `timer->action(timer)` crashes.
This PR simply fixes the crash, but does not attempt to find the more
fundamental bug.
The transceiver module expects an `ieee802154_packet_t` instead of a
`radio_packet_t` if the device supports the IEEE 802.15.4 packet format.
This commit fixes the corresponding transceiver shell command for
`txtsnd` to set destination address (short address mode), payload, and
length accordingly.
```
/sys/shell/commands/sc_net_if.c:631:27: error: ‘IPV6_MAX_ADDR_STR_LEN’ undeclared (first use in this function)
char addr_str[IPV6_MAX_ADDR_STR_LEN];
^
```
Currently, the TCP_STACK_SIZE is `KERNEL_CONF_STACKSIZE_DEFAULT`.
However, since printf statements are used in the tcp relevant code,
this stack size is too small (esp. for MSBA2).
While testing the tcp implementation on MSBA2 I noticed that
the value of `tcp_input_buffer_end` gets changed whenever acquiring or
releasing the mutex of the struct on the server side.
After deleting the packed attribute of the struct this problem was
resolved and the value stayed the same after acquiring and releasing.
This problem could maybe arise from badly placed cache lines due to
missing padding... I am not sure.
Anyway, I guess using the packed attribute is useless here and makes it
more error-prone.
The current implementation does not set the ack bit
for outgoing data segments and the fin segment.
However, RFC793 states that all segments
should have an ack bit set in order to present a valid
ack nr. in outgoing segments.
Currently, data segments and acknowledgement segments
are distinguished by the existence of their ack bit.
With the new assumption, that both of these types of
segments need an ack bit set, I had to change several
parts of the current implementation to make this
decision by inspecting the payload size.
destiny: added parens
Many modules have subdirectories. Often these subdirectories should only
be included under certain circumstances. Modules that use submodules
currently need to use this pattern:
```make
DIRS = …
all: $(BINDIR)$(MODULE).a
@for i in $(DIRS) ; do $(MAKE) -C $$i ; done ;
include $(RIOTBASE)/Makefile.base
clean::
@for i in $(DIRS) ; do $(MAKE) -C $$i clean ; done ;
```
This PR moves the `all:` and `clean::` boilerplate into `Makefile.base`.