1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

3231 Commits

Author SHA1 Message Date
Christian Mehlis
0aa87a8ee7 Merge pull request #1208 from Kijewski/issue-1199
documentation: fix doxygen for `pthread_*.h`
2014-05-20 14:19:52 +02:00
René Kijewski
06eb95d687 Merge pull request #1216 from LudwigOrtmann/issue-1215
native: set _native_pid correctly in daemon mode
2014-05-20 14:09:44 +02:00
Oleg Hahm
8aa78edb0a Merge pull request #1213 from OlegHahm/ubuntu_msp430_errno_fix
msp430: workaround: define errno values if not provided by MSP430 lib
2014-05-20 12:03:11 +02:00
Ludwig Ortmann
c9f68e79b9 native: set _native_pid correctly in daemon mode
This fixes a bug that leads to all unix sockets being created as
`/tmp/riot.tty.0`.
2014-05-20 08:53:26 +02:00
René Kijewski
88e8915dfe Add TLSF (two level segregated fit) PKG
This is my second take on #669, because I was asked to separate it from #764.

This change adds a malloc implementation as a PKG, which uses *TLSF* (two
level segregated fit).

The patch file removes the 64bit capatibilities, debug functions, and the
option to have multiple "control blocks" (a control block holds multiple
memory pools). It wraps `malloc()` and friends in `disableIRQ() … restoreIRQ()`.

The implemention does not support 16bit platforms, yet, but probably only some
constants would need fixing. I limited the maximum size of a memory pool to
2**30 bytes = 1GB.

This PKG is not meant to be used by applicitions directly, but by the boards.
The board's initialition code needs to call
`int tlsf_add_pool(void *mem, size_t bytes)` for every free memory region it
has. If the board in using newlib, then this call needs to happen before the
first call to `puts`, `printf`, and friends, because newlib allocates the
control data IO streams (stdin, stdout, stderr) on the heap. Adding a small
(e.g. 1kB) pool before proper board initialization would be a possible solution.

Please read the additional information in the website of the implementator,
http://tlsf.baisoku.org/:

> TLSF (two level segregated fit) is a relatively new memory
allocator designed for embedded systems. It boasts constant
time O(1) malloc/free response time and a 4-byte block
overhead. Though it typically is slightly slower than other
allocators such as dlmalloc, it has no worst-case behavior.

> The original implementation, which comes alongside the white
paper, is distributed under the GNU GPL/LGPL. The code found
here is an original implementation, released into the public
domain, therefore is not subject to any licensing restrictions.

> Features:
 -  O(1) cost for malloc, free, realloc, memalign
 -  Extremely low overhead per allocation (4 bytes)
 -  Low overhead per pool (~3kB)
 -  Low fragmentation
 -  Compiles to only a few kB of code and data

> Caveats:
 -  Currently, assumes architecture can make 4-byte aligned accesses
 -  Not designed to be thread safe; the user must provide this

> Known Issues:
Due to the internal block structure size and the implementation
details of tlsf_memalign, there is worst-case behavior when requesting
small (<16 byte) blocks aligned to 8-byte boundaries. Overuse of memalign
will generally increase fragmentation, but this particular case will leave
lots of unusable "holes" in the heap. The solution would be to internally
align all blocks to 8 bytes, but this will require significantl changes
to the implementation. Contact me if you are interested.
2014-05-20 03:17:09 +02:00
Oleg Hahm
05a3570ffe Merge pull request #1189 from Kijewski/compile_test-empty-folders
buildtest: ignore empty folders
2014-05-19 19:03:51 +02:00
Oleg Hahm
31351a0dc0 msp430: workaround: define errno values if not provided by MSP430 lib 2014-05-19 18:54:20 +02:00
René Kijewski
57429954c1 Merge pull request #1212 from authmillenon/fix-application-names
Fix application name for test_bloom_byte application
2014-05-19 16:35:31 +02:00
Martin Lenders
3daa80124e Fix application name for test_bloom_byte application 2014-05-19 16:16:19 +02:00
Oleg Hahm
e980f82f99 Merge pull request #1202 from OlegHahm/cortex_doxygen_cleanup
documentation: cleanup doxygen for SAM3x8e and Z1
2014-05-19 11:34:32 +02:00
Oleg Hahm
4f645ecf36 documentation: fix doxygen group for Z1 2014-05-19 10:45:17 +02:00
Oleg Hahm
9bef59cc55 documentation: fix CMSIS doxygen for SAM3x8e 2014-05-19 10:45:05 +02:00
Benjamin Valentin
1235a0f579 pkg/oonf_api: fix conflicting types on msba2 2014-05-18 22:57:03 +02:00
René Kijewski
5cb1d03ef4 make: add comprehensive buildinfo list
Sometimes it is difficult to track down build errors for boards that you
are unfamiliar with.

This change adds `make buildinfo` that prints out all the relevant build
information for the selected board and project:

```
PROJECT: default
BOARD:   msba2
CPU:     lpc2387
MCU:     lpc2387

RIOTBASE:  /home/kijewski/RIOT/RIOT
RIOTBOARD: /home/kijewski/RIOT/RIOT/boards
RIOTCPU:   /home/kijewski/RIOT/RIOT/cpu

DEFAULT_MODULE: auto_init core cpu sys
DISABLE_MODULE:
USEMODULE:      arm_common cc110x_ng cc110x_spi config defaulttransceiver gpioint lib lpc_common ltc4150 mci net_help posix protocol_multiplex ps random rtc shell shell_commands sht11 timex transceiver uart0 vtimer

ELFFILE: /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.elf
HEXFILE: /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.hex

CC: arm-none-eabi-gcc
CFLAGSS:
        -DBOARD_MSBA2
        -DCPU_LPC2387
        -DMODULE_ARM_COMMON
        -DMODULE_AUTO_INIT
        -DMODULE_CC110X_NG
        -DMODULE_CC110X_SPI
        -DMODULE_CONFIG
        -DMODULE_CORE
        -DMODULE_CPU
        -DMODULE_DEFAULTTRANSCEIVER
        -DMODULE_GPIOINT
        -DMODULE_LIB
        -DMODULE_LPC_COMMON
        -DMODULE_LTC4150
        -DMODULE_MCI
        -DMODULE_NET_HELP
        -DMODULE_POSIX
        -DMODULE_PROTOCOL_MULTIPLEX
        -DMODULE_PS
        -DMODULE_RANDOM
        -DMODULE_RTC
        -DMODULE_SHELL
        -DMODULE_SHELL_COMMANDS
        -DMODULE_SHT11
        -DMODULE_SYS
        -DMODULE_TIMEX
        -DMODULE_TRANSCEIVER
        -DMODULE_UART0
        -DMODULE_VTIMER
        -O2
        -Wall
        -Wstrict-prototypes
        -mcpu=arm7tdmi-s
        -gdwarf-2
        -std=gnu99
        -fno-delete-null-pointer-checks
        -Wstrict-prototypes
        -Werror=strict-prototypes
        -Wold-style-definition
        -Werror=old-style-definition

LINK: arm-none-eabi-gcc
LINKFLAGS:
        -gdwarf-2
        -mcpu=arm7tdmi-s
        -static
        -lgcc
        -nostartfiles
        -T/home/kijewski/RIOT/RIOT/cpu/lpc2387/linkerscript.x

OBJCOPY: arm-none-eabi-objcopy
OFLAGS:  -O ihex

FLASHER: lpc2k_pgm
FFLAGS:  /dev/ttyUSB0 /home/kijewski/RIOT/RIOT/examples/default/bin/msba2/default.hex

TERMPROG: /home/kijewski/RIOT/RIOT/dist/tools/pyterm/pyterm.py
PORT:     /dev/ttyUSB0

DEBUGGER:
DEBUGGER_FLAGS:

MAKEFILE_LIST:
        /home/kijewski/RIOT/RIOT/examples/default/Makefile
        /home/kijewski/RIOT/RIOT/Makefile.include
        /home/kijewski/RIOT/RIOT/Makefile.modules
        /home/kijewski/RIOT/RIOT/Makefile.pseudomodules
        /home/kijewski/RIOT/RIOT/Makefile.defaultmodules
        /home/kijewski/RIOT/RIOT/boards/msba2/Makefile.include
        /home/kijewski/RIOT/RIOT/boards/msba2-common/Makefile.include
        /home/kijewski/RIOT/RIOT/boards/msba2-common/Makefile.dep
        /home/kijewski/RIOT/RIOT/cpu/lpc2387/Makefile.include
        /home/kijewski/RIOT/RIOT/cpu/arm_common/Makefile.include
        /home/kijewski/RIOT/RIOT/cpu/lpc_common/Makefile.include
        /home/kijewski/RIOT/RIOT/Makefile.dep
        /home/kijewski/RIOT/RIOT/Makefile.cflags
        /home/kijewski/RIOT/RIOT/sys/Makefile.include
        /home/kijewski/RIOT/RIOT/drivers/Makefile.include
        /home/kijewski/RIOT/RIOT/Makefile.buildtests
```
2014-05-18 18:59:51 +02:00
René Kijewski
e135bdc266 documentation: fix doxygen for pthread_*.h
The pthread header files aren't in the doxygen page anymore after #1137,
because I `@file`'d the `.c` files, not the `.h` files.

This change moves doxygen boilerplate.

Closes #1199.
2014-05-18 17:33:49 +02:00
René Kijewski
79b6c41f5a Merge pull request #1000 from OlegHahm/prefix_core_api_functions
core: prefix API functions correctly
2014-05-18 16:26:01 +02:00
René Kijewski
4df2f4b4da unittests: support Makefile.include in test suites
This change will pull in the `Makefile.include` for every test suite
that is compiled in.

Fixes #1205.
2014-05-18 16:20:35 +02:00
Oleg Hahm
ef5ec344fd core: prefix API functions correctly
Also changed names for bitarithm functions and rename thread_pid to sched_active_pid.
2014-05-18 08:53:20 +02:00
Oleg Hahm
94e4ee1611 Merge pull request #1083 from OlegHahm/test_hwtimer_w_thread_sleep
tests: added a thread_sleep() at the end
2014-05-17 00:49:44 +02:00
Oleg Hahm
127801d18d tests: added a thread_sleep() at the end
Letting the main thread exit could cause failing test if thread_exit()
is broken for the tested platform, preventing the actual testing of the
hwtimer.
2014-05-17 00:30:38 +02:00
Martine Lenders
f8e329bb80 Merge pull request #1198 from Kijewski/issue-1197
make: fix rebuilding on changes without `clean` or `-B`
2014-05-16 22:00:42 +02:00
René Kijewski
329cc53d2a Merge pull request #1194 from LudwigOrtmann/cortexygen
documentation: fix generation Doxygen documentation after Cortex import
2014-05-16 21:07:25 +02:00
René Kijewski
bd1630adca buildtest: ignore empty folders
`compile_test.py` fails if there are empty folders in `/examples` or
`tests`. This is not a problem for Travis, because it always has a clean
repo.

For the average users there is a problem if they work on multiple
branches and one branch has new examples or tests. If they don't delete
the residual `bin` folders, then `compile_test.py` will print out these
applications as having failed.

This change checks for the existence of a `Makefile` in the application
folder. Also I added a progress indicator, because I like it. :)
2014-05-16 20:18:52 +02:00
Ludwig Ortmann
aa4e61fab2 documentation: clean up doxygen mess after cortex
fixes #1190
2014-05-16 19:47:54 +02:00
René Kijewski
3d6c7008e5 make: make clean usable together with -j 2014-05-16 19:11:55 +02:00
René Kijewski
66a3d7da77 make: fix #1197
Partial revert of 85b7eca19e

Fixes #1197.
2014-05-16 18:18:35 +02:00
Ludwig Ortmann
f3a587f43a Merge pull request #1196 from LudwigOrtmann/native_missing_include
native: add missing include
2014-05-16 17:56:17 +02:00
Ludwig Ortmann
cbf39bf012 native: add missing include
crash.c was missing native_internal.h
2014-05-16 17:24:45 +02:00
Ludwig Ortmann
9d4a92003c core/hwtimer: disable interrupts in hwtimer_remove
Before only the hardware timer's own interrupt was being disabled.
This led to a race condition in the following scenario:

```
Thread1:
    hwtimer_remove()
    hwtimer_arch_disable_interrupt();

// INTERRUPT -> Thread2 (which has a higher priority than Thread1) gets scheduled

Thread2:
    ...
    hwtimer_remove()
    hwtimer_arch_disable_interrupt(); // hwtimer interrupt is already disabled
    ...
    hwtimer_arch_enable_interrupt();
    ...
   // yield | terminate -> Thread1 gets scheduled again

Thread1:
    ... // these instructions are being run with the hwtimer interrupt enabled
    hwtimer_arch_enable_interrupt(); // hwtimer interrupt is already enabled
```

Fixes #924
2014-05-16 15:48:48 +02:00
Kévin Roussel
988de6b2cd Merge pull request #893 from rousselk/z1-port
Zolertia Z1 port for RIOT OS
2014-05-16 12:08:56 +02:00
Kévin Roussel
2a3033b3ca boards/z1: initial import 2014-05-16 11:02:06 +02:00
René Kijewski
28ff8cebae Merge pull request #1085 from Kijewski/compile_test-process-indicator
Add process indicator to compile_test.py
2014-05-16 00:49:21 +02:00
Oleg Hahm
5d7f7dd686 Merge pull request #1079 from BytesGalore/add_NORETURNs
core: and cpu: Added NORETURN to functions that should not return
2014-05-16 00:33:20 +02:00
René Kijewski
6587fe2b76 Merge pull request #1183 from Kijewski/issue-1104
make: print error if make was executed in the root
2014-05-15 20:08:07 +02:00
René Kijewski
e189064171 make: print error if make was executed in the root
Fixes #1104, alternative to #1178.
2014-05-15 20:07:32 +02:00
René Kijewski
7acc6500c1 Merge pull request #1094 from BytesGalore/fix_print_format_warnings_test_vtimer
test:test_vtimer fixed initializer and Wformat warnings
2014-05-15 19:57:59 +02:00
Martin
4c2aaa6321 fixed initializer and Wformat warnings 2014-05-15 19:30:02 +02:00
Ludwig Ortmann
9b47af0b54 Merge pull request #1184 from LudwigOrtmann/native_license_unification
Native license unification
2014-05-15 18:36:15 +02:00
René Kijewski
4b3083e386 Merge pull request #1143 from jan-schreib/static-code-analyser-cleanup
sys/ping/ping.c: malloc size of type, not size of pointer
2014-05-15 18:20:58 +02:00
Ludwig Ortmann
98bbb80571 documentation: append my email to my name everywhere 2014-05-15 18:07:17 +02:00
Ludwig Ortmann
3a3c04e66e native/tramp.S: add missing license header 2014-05-15 18:07:17 +02:00
Ludwig Ortmann
2c5c177f75 native: unify license headers 2014-05-15 18:07:17 +02:00
Jan S
836b8b9d2d sys/ping/ping.c: malloc size of type, not size of pointer 2014-05-15 17:43:25 +02:00
Jan S
ba907471f3 fixed printf specifiers 2014-05-15 17:42:57 +02:00
René Kijewski
6b4d2de74e Merge pull request #961 from authmillenon/core-unittests
unittests: Unittests for core module data strutures
2014-05-15 15:57:56 +02:00
René Kijewski
0b9c0fb475 Merge pull request #1154 from Kijewski/issue-1150
msp430: fix missing members in `struct tm`
2014-05-15 14:59:24 +02:00
René Kijewski
a68f4f2d75 Merge pull request #1177 from LudwigOrtmann/issue-1118
native: initialize maybe uninitialized variable
2014-05-15 14:56:37 +02:00
Ludwig Ortmann
3fb35835a1 Merge pull request #1041 from LudwigOrtmann/issue_951
Fix doxygen comments for hwtimer.h, queue.h and io.h
2014-05-15 13:51:34 +02:00
Ludwig Ortmann
a0e9f3680b core/doc: complete io.h 2014-05-15 13:48:56 +02:00
Ludwig Ortmann
c42a56181b core/doc: complete queue.h 2014-05-15 13:48:56 +02:00