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

468 Commits

Author SHA1 Message Date
Martine Lenders
c0b0110de9 core: Fix msg_send_receive
Fixes #1935
2014-12-03 15:42:37 +01:00
Oleg Hahm
d92e9af91c doc: fixed broken param descriptions 2014-11-30 22:34:50 +01:00
Ludwig Ortmann
68e1db938c core/hwtimer: fix HWTIMER_SPIN_BARRIER doc 2014-11-28 13:53:23 +01:00
René Kijewski
8a9220a85c core: cib size must not exceed MAXINT/2 2014-11-26 18:04:54 +01:00
Oleg Hahm
d34e14424e Revert "core: faster bitarithm_msb"
This reverts commit ed7e233876.
2014-11-26 17:20:47 +01:00
Ludwig Ortmann
b4d9c9e6b7 core/msg: coding convention cleanup 2014-11-25 19:38:36 +01:00
Ludwig Ortmann
535839f2d5 core/msg: use disable/restoreIRQ
* needed to change internal `msg_send` to allow external disabling of interrupts
2014-11-25 19:38:36 +01:00
Hauke Petersen
2220a9fab0 core/cpu/boards: removed fw_puts from RIOT 2014-11-21 13:09:02 +01:00
Oleg Hahm
459f550be5 Merge pull request #2042 from Kijewski/restrict
c++: `s/restrict/__restrict/`
2014-11-19 15:29:23 +01:00
Oleg Hahm
771b3a4506 Merge pull request #1984 from Kijewski/net_help-is-odd
core: move NTOHL and friends into byteorder.h
2014-11-19 15:11:43 +01:00
René Kijewski
f89e1f4a3d c++: s/restrict/__restrict/
`restrict` is not a keyword in C++, but `__restrict` is understood by
GCC-ish compilers.
2014-11-19 14:27:19 +01:00
9ce0b676b4 core: sys: move ringbuffer to core 2014-11-19 14:18:39 +01:00
René Kijewski
2c370862b7 core: allow inclusion of byteorder.h in C++ code 2014-11-19 00:47:25 +01:00
René Kijewski
434d6a1f65 core: move NTOHL and friends into byteorder.h 2014-11-19 00:46:41 +01:00
René Kijewski
ff2a1dc61b core: remove needless test in msg.c
`thread.c` initializes a thread with an empty message queue. `cib_put()`
will `return -1` for an empty CIB, so there is no need to test if
`thread->msg_array != NULL`.
2014-11-14 10:54:33 +01:00
René Kijewski
a07b44781d C++ -_- 2014-11-11 21:07:40 +01:00
Ludwig Ortmann
e4fec18bdc core/sched: unify DEBUG text syntax, nomenclature 2014-11-11 17:55:09 +01:00
René Kijewski
ab545f83b0 core: inline cib.c
The functions in `cib.h` are only used in `msg.c`. They are very small,
and proper function calls have a bigger overhead than inlining these
functions.

The difference in .text size (worst to best):

```
+104 native
+69  qemu-i386
+32  mbed_lpc1768
+28  samr21-xpro

-54  chronos
-54  z1
-56  iot-lab_M3
-56  msb-430
-56  msb-430h
-56  msba2
-56  openmote
-56  spark-core
-56  telosb
-56  wsn430-v1_3b
-56  wsn430-v1_4
-58  arduino-mega2560
-60  airfy-beacon
-60  arduino-due
-60  f4vi1
-60  msbiot
-60  pca10000
-60  pca10005
-60  stm32f0discovery
-60  stm32f3discovery
-60  stm32f4discovery
-60  udoo
-60  yunjia-nrf51822
-72  avsextrem
-72  pttu
-120 redbee-econotag
```
2014-11-11 17:40:18 +01:00
René Kijewski
b579372605 Merge pull request #1962 from Kijewski/sched-fix-debug-1
core: sched.c did not compile with DEBUG=1
2014-11-11 17:01:49 +01:00
René Kijewski
23177e5326 Remove special case for atmega in kernel_types.h 2014-11-11 11:42:44 +01:00
Oleg Hahm
a262de0678 core: always set sender_pid in msg_send_int 2014-11-10 09:29:16 +01:00
René Kijewski
12d157247c core: sched.c did not compile with DEBUG=1 2014-11-07 12:45:12 +01:00
René Kijewski
c3ba66781d core: put more intelligence into queue_msg()
Fixes #1942.

There were two instances were it was not checked the target thread has a
message queue before queuing the message.

This PR centralizes the check into `queue_msg()`.
2014-11-07 12:32:15 +01:00
Oleg Hahm
8dab420321 Merge pull request #1835 from OlegHahm/msg_receive_yield
core: msg_receive should yield
2014-11-06 16:27:32 +01:00
Oleg Hahm
4fd3d62f2a core: msg_receive should yield
If a thread sends blocking, but the target thread is not currently in
receive mode, the sender gets queued. If it has a higher priority it
should run again as soon as the target goes into receiving mode.
2014-11-06 15:35:28 +01:00
feb550f17a Merge pull request #1885 from OlegHahm/thread_yield_higher_cleanup
core: thread_yield_higher cleanup
2014-10-30 23:22:27 +01:00
Oleg Hahm
6b39ce9650 config: moved from core to sys
There's no need to run config_load from core directly, can be done by
auto_init.
2014-10-30 22:27:11 +01:00
Oleg Hahm
09f225f6ed config: use radio_address_t 2014-10-30 22:27:11 +01:00
René Kijewski
9ddbf57709 core: refactor sched_run
`sched_run()` was cluttered. Many individual changes were done without a
proper refactoring.
2014-10-30 21:00:09 +01:00
Oleg Hahm
9a61d8cf1c core: move optional tcb members to DEVELHELP 2014-10-30 16:37:10 +01:00
Oleg Hahm
4885690874 core: update irq_arch documentation 2014-10-30 16:11:11 +01:00
Oleg Hahm
9b1e180cd8 core: eliminate warning
This initialized has actually no relevance and is just needed to
suppress a compiler warning.
2014-10-30 16:11:11 +01:00
benpicco
37d8cabbe8 Merge pull request #1883 from kaspar030/hwtimer_new_irq_api
core: hwtimer: use disable/restoreIRQ
2014-10-28 15:53:50 +01:00
Oleg Hahm
93ac114bc3 core: move thread_yield*() to thread.[ch]
Although it might conceptionally rather belong to the scheduler, the
yield functions are prefixed with thread_ and thus, belong there.
2014-10-28 00:56:37 +01:00
Oleg Hahm
6f53cd484d core: make sched_runqueue public
Reverting b604832, because thread_yield() needs to access this
information.
2014-10-28 00:56:14 +01:00
cbab2efe7e core: hwtimer: use disable/restoreIRQ 2014-10-27 17:44:33 +01:00
Ludwig Ortmann
eceb656c49 core,sys: fix storage types for irq API usage
* should not have any effect as long as `unsigned` and `int` are compatible
* also fix two cosmetic `unsigned int` -> `unsigned` for consistency
2014-10-27 16:25:23 +01:00
Oleg Hahm
c33e1b5dad Merge pull request #1844 from OlegHahm/doxygen_cleanup
Doxygen cleanup
2014-10-24 16:04:01 +02:00
Oleg Hahm
9b819c4dd6 Merge pull request #1836 from Kijewski/yield-less
core: introduce sched_yield(), yield less
2014-10-24 10:05:37 +02:00
René Kijewski
677d690e2b core: introduce thread_yield_higher(), yield less
Fixes #1708.

Currently involuntary preemption causes the current thread not only to
yield for a higher prioritized thread, but all other threads of its own
priority class, too.

This PR adds the function `thread_yield_higher()`, which will yield the
current thread in favor of higher prioritized functions, but not for
threads of its own priority class.

Boards now need to implement `thread_yield_higher()` instead of
`thread_yield()`, but `COREIF_NG` boards are not affected in any way.

`thread_yield()` retains its old meaning: yield for every thread that
has the same or a higher priority.

This PR does not touch the occurrences of `thread_yield()` in the periph
drivers, because the author of this PR did not look into the logic of
the various driver implementations.
2014-10-24 00:09:56 +02:00
René Kijewski
c0ce346a12 cppcheck: don't needlessly assign sched_active_pid 2014-10-23 20:50:31 +02:00
Oleg Hahm
206b75933e doc: fixed remaining doxygen warnings in core
Only one warning remains and will be fixed in a separate commit.
2014-10-23 18:30:09 +02:00
Oleg Hahm
db8f3d2650 cpu: use typed function pointer for thread_arch_init 2014-10-23 18:26:21 +02:00
Oleg Hahm
18381661dc doc: fix documentation for hwtimer
@verbatim was used incorrectly and a closing html tag was missing
2014-10-23 17:29:25 +02:00
René Kijewski
b604832777 core: make sched_runqueues static
PR #1000 overlooked to rename `runqueues` into `sched_runqueues` in
 `sched.h`. This shows that the variable is not used outside of
 `sched.c`.

 As the list should not be accessed outside of the scheduler, so it
 can be `static`.
2014-10-22 16:55:50 +02:00
5146c66786 core: adapt to msg_try_send 2014-10-22 12:37:33 +02:00
bdcac07faa core: msg: introduce msg_try_send 2014-10-22 12:37:33 +02:00
DangNhat Pham-Huu
e6c7414357 Merge pull request #1805 from BytesGalore/extern_C_in_headers_core_unguard_includes
core: moved `#include`s outside the `extern "C"` guards
2014-10-22 07:09:57 +07:00
Martine Lenders
a7ed27130d byteorder: silence warnings in clang 2014-10-21 19:50:37 +02:00
BytesGalore
74161f0f2d core: moved #includes outside the extern "C" guards 2014-10-21 13:46:04 +02:00
René Kijewski
862000b715 core: align stack on a 32bit boundary
Fixes #1267.
2014-10-17 18:22:37 +02:00
Ludwig Ortmann
cd3dff3f2e core/msg: add DEVELHELP checks for valid pid 2014-10-13 19:44:35 +02:00
Ludwig Ortmann
ab418faa34 core: add doxygen header for kernel_types 2014-10-13 19:44:35 +02:00
Ludwig Ortmann
2fe2a39602 core: refactor check for valid pid
move into header and remove redundant condition
2014-10-13 19:44:35 +02:00
Martine Lenders
42f96b0d60 Merge pull request #1699 from Kijewski/issue-1586
core: Provide functions for different byte orders
2014-10-10 07:38:57 +02:00
Pham Huu Dang Nhat
2ded32dee7 c++: core: add extern C in header files 2014-10-09 06:18:16 +07:00
Benjamin Valentin
d6ca7c44c2 prevent rounding 0 if HWTIMER_SPEED > 1000000L
The current macros in hwtimer.h expect HWTIMER_SPEED to be < 1000000L, otherwise integer arithmetic will round the result down to 0.
Add a case to prevent that.
2014-10-06 22:13:48 +02:00
Ludwig Ortmann
f677f70836 core/hwtimer: add HWTIMER_WAIT_OVERHEAD 2014-10-01 19:53:43 +02:00
Ludwig Ortmann
0a8be81526 core/hwtimer: clean up header
- break/shorten overlong lines
- improve grammar
2014-10-01 19:53:42 +02:00
Ludwig Ortmann
da550bc913 introduce HWTIMER_SPIN_BARRIER (API change)
Boards should define HWTIMER_SPIN_BARRIER that is used to decide
whether it makes sense to set a timer and yield or call hwtimer_spin
instead.
Used by `core/hwtimer.c` and `sys/vtimer/vtimer.c`.
A default value is provided and a warning is printed when it is used.
2014-10-01 19:53:42 +02:00
René Kijewski
749db8d0dd core: Provide functions for different byte orders
Rationale: see #1586.
2014-09-29 21:07:02 +02:00
René Kijewski
4e50d74272 core: Provide ssize_t in a common place
Now you can include `kernel_types.h` if you need the `ssize_t`, without
 facing problems due to the terrible MSP toolchain.
2014-09-26 14:04:30 +02:00
René Kijewski
1df0b5644a core: sched_switch only switch for higher priority
sched_switch() is called by some library functions when a call unblocks
another thread. Then it needs to be tested if the current thread should
be preempted for the newly runnable thread.

A non-volutarily yield should only happen if the unblocked thread has a
_higher_ priority than the current thread. The current implementation,
which tests if the other thread has the same or a higher priority, does
not fit the documentation.
2014-09-25 10:16:33 +02:00
Ludwig Ortmann
289c4c0ee4 doc: add license headers to some .h files 2014-09-18 17:45:11 +02:00
Martine Lenders
1cc82b6aa7 core: priority_queue: simplify inheritance 2014-09-05 18:17:12 +02:00
Kévin Roussel
d1cf9c4bfd Ensure hwtimer_spin() won't wait for an unreachable stop counter value
without using a costly MOD operation
2014-08-28 15:01:58 +02:00
Ludwig Ortmann
b7992922ce fix license headers in non-.c files 2014-08-23 16:16:26 +02:00
003dd1969c Merge pull request #1566 from Kijewski/undef_is_null
core: let PIDs begin with 1
2014-08-22 00:43:04 +02:00
René Kijewski
a5c9d4572d core: clist without explicit thread
Right now the core component `clist` is a generic cyclic doubly-linked list.
In the core it is used in `tcb_t::rq_entry`.
Further it is used `net_if.c`.

This commit removes the member `clist_node_t::data` which stored the
pointer to the `tcb_t` instance of which the clist is already a member.
The needless member added `sizeof (int)` bytes to every instance of
`tcb_t`.

In `net_if.c` the clist was used in a type-punned way, so that the
change won't affect it.
2014-08-21 21:10:04 +02:00
René Kijewski
27e393621a core: clist is a cyclic list 2014-08-21 21:10:03 +02:00
8538670e12 Merge pull request #1583 from Kijewski/issue-1399
core: SCHED_PRIO_LEVELS==16 for every board
2014-08-21 20:04:57 +02:00
René Kijewski
b4f105f178 core: SCHED_PRIO_LEVELS==16 for every board
Closes #1399.

> Using a different value for SCHED_PRIO_LEVELS for 16 and 32 bit
platforms hurts portability, one thing that we heavily advertise about
RIOT. if you want to write a portable application, then you have to
assume the lower value.

This PR defaults `SCHED_PRIO_LEVELS` to 16 for every board.
2014-08-18 10:43:41 +02:00
René Kijewski
2cb4166c3e all over the place: use sched_active_pid
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.
2014-08-17 21:04:25 +02:00
René Kijewski
427a5fbaef core: let valid PIDs start with 1 2014-08-17 19:51:03 +02:00
René Kijewski
b31e5a8675 core: introduce KERNEL_PID_FIRST and KERNEL_PID_LAST 2014-08-17 19:50:34 +02:00
René Kijewski
a7e5157fd9 core: add thread_get()
Remove PID check duplication in `thread_getstatus()` and
`thread_getname()`.
2014-08-15 01:16:13 +02:00
René Kijewski
bf6548ca30 core: shadowing in priority_queue_print
The variable `node` shadows the parameter `node`. The access of
`node->first` would not compile, because there is no member `first` in
`priority_queue_t`.
2014-08-11 18:42:25 +02:00
Oleg Hahm
c2b0423918 core: renamed KERNEL_PID_NULL to KERNEL_PID_UNDEF
As @authmillenon pointed out the "null" in the old name is somewhat
misleading, since the actual value is -1.
2014-08-07 16:31:27 +02:00
Oleg Hahm
0836cd0b18 core: moved definition of KERNEL_PID_NULL
kernel_pid_t is defined in kernel_types.h, thus it makes sense to move
the macro for an invalid kernel pid there, too.
2014-08-07 16:31:27 +02:00
René Kijewski
a5fe9078c8 Merge pull request #1293 from Kijewski/issue-1287
core: only store the stack size for DEVELHELP (implementation)
2014-08-05 18:56:29 +02:00
Ludwig Ortmann
1efdf99dfe core/priority_queue: add dynamic initializers
- priority_queue_init
- priority_queue_node_init
2014-08-05 17:57:45 +02:00
Ludwig Ortmann
c2b2e4554b core/queue: queue -> priority_queue
Rename queue to priority queue, because that's what it is.
2014-08-05 17:57:45 +02:00
Ludwig Ortmann
2e190d21ed doc: fix spelling in core/include 2014-08-05 17:08:53 +02:00
René Kijewski
f7bdc7e4fe core: thread_measure_stack_free() is only useful for DEVELHELP 2014-08-02 00:35:41 +02:00
René Kijewski
9e3830a72b core: only store the stack size for DEVELHELP
`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.
2014-08-02 00:35:41 +02:00
Ludwig Ortmann
c216d2870f doc: add detailed scheduler documentation 2014-08-01 18:57:31 +02:00
Oleg Hahm
983d056c75 core: harmonizes the data type for the process ID
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.
2014-08-01 12:02:54 +02:00
Ludwig Ortmann
3ca4f18479 doc: use lgplv2.1-short license header instead of lgpl-short-riot 2014-07-31 22:57:20 +02:00
Cenk Gündoğan
5e8c0c9058 converting tabs to spaces in core (#1439)
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.
2014-07-31 20:44:09 +02:00
René Kijewski
4032a22719 queue: add queue_t root type 2014-07-30 21:10:22 +02:00
René Kijewski
4c6a6ee4b3 queue: remove unused generic functions
Closes #1153.
2014-07-30 21:08:15 +02:00
René Kijewski
7035ae0051 queue: remove inttypes clutter from core header 2014-07-30 21:08:15 +02:00
René Kijewski
dacbc0043e core:queue: remove ancient example 2014-07-30 21:08:15 +02:00
Ludwig Ortmann
b3b6cff587 doc: some more author fixes
fix all occurences of INRIA as an author
correct Oliver Hahms authorship and indentation
2014-07-29 18:17:48 +02:00
Ludwig Ortmann
b6846e31fc doc: fix most occurences of FU as an author
.. but only if there are other authors as well
2014-07-29 17:23:11 +02:00
Ludwig Ortmann
ce4aaa6970 doc: little mutex.h fixes
- a university is not an author
- move internal tags to the right place
2014-07-29 14:37:41 +02:00
René Kijewski
6fae042a60 core: remove unneeded calls to mutex_init() 2014-07-29 09:33:24 +02:00
René Kijewski
e03e20b7f6 core: simplify mutex initializer 2014-07-29 09:33:23 +02:00
René Kijewski
e5d6142823 core: simplify mutex signatures 2014-07-29 09:32:16 +02:00
Ludwig Ortmann
a585eaf752 core/sched: remove MODULE_NSS helpers (API CHANGE)
remove thread_getlastpid and last_pid from the API, it is unused
2014-07-12 07:30:31 +02:00