zephyr/kernel
Andrew Boie 7f4d006959 kernel: fix errno access for user mode
The errno "variable" is required to be thread-specific.
It gets defined to a macro which dereferences a pointer
returned by a kernel function.

In user mode, we cannot simply read/write the thread struct.
We do not have thread-local storage mechanism, so for now
use the lowest address of the thread stack to store this
value, since this is guaranteed to be read/writable by
a user thread.

The downside of this approach is potential stack corruption
if the stack pointer goes down this far but does not exceed
the location, since a fault won't be generated in this case.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2018-07-19 16:44:59 -07:00
..
include kernel: Add the old "multi queue" scheduler algorithm as an option 2018-07-03 17:09:15 -04:00
alert.c syscalls: remove policy from handler checks 2018-05-17 23:34:03 +03:00
atomic_c.c license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
CMakeLists.txt kernel: Cmake: Add __ZEPHYR_SUPERVISOR__ macro for kernel files. 2018-05-15 17:48:18 +03:00
compiler_stack_protect.c kernel: add CODE_UNREACHABLE in _StackCheckHandler 2018-04-17 10:50:12 -07:00
device.c kernel: device: Only compare strings if pointer comparison fails 2018-02-15 17:31:59 -08:00
errno.c kernel: fix errno access for user mode 2018-07-19 16:44:59 -07:00
idle.c kernel: idle: Define _sys_soc_resume functions conditionally 2018-07-19 17:12:58 -04:00
init.c coverage: exclude k_call_stacks_analyze from coverage 2018-07-18 10:39:48 -04:00
int_latency_bench.c Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
Kconfig kernel: minor improve in SYS_CLOCK_HW_CYCLES_PER_SEC help description 2018-07-16 11:01:47 -04:00
Kconfig.event_logger kernel: Kconfig: Remove redundant 'default n' properties 2018-06-22 15:21:14 -04:00
Kconfig.power_mgmt kernel: Kconfig: Remove redundant 'default n' properties 2018-06-22 15:21:14 -04:00
mailbox.c kernel: Fix sloppy wait queue API 2018-05-18 01:48:48 +03:00
mem_domain.c kernel: mem_domain: Fix compile issues 2018-03-05 10:47:00 -06:00
mem_slab.c kernel: mem_slab: Reschedule in k_mem_slab_free only when necessary. 2018-05-18 20:16:50 +03:00
mempool.c kernel/mempool: Handle transient failure condition 2018-05-27 09:55:04 -04:00
msg_q.c kernel: Wait queues aren't dlists anymore 2018-05-19 07:00:55 +03:00
mutex.c kernel: Fix sloppy wait queue API 2018-05-18 01:48:48 +03:00
pipes.c kernel: Wait queues aren't dlists anymore 2018-05-19 07:00:55 +03:00
poll.c kernel/poll: Remove POLLING thread state bit 2018-06-11 17:25:38 -04:00
queue.c kernel/drivers: fix compile warnings 2018-07-01 22:58:23 +02:00
sched.c kernel: Cleanup _ms_to_ticks(). 2018-07-03 22:46:39 -04:00
sem.c kernel: Fix sloppy wait queue API 2018-05-18 01:48:48 +03:00
smp.c kernel: Rework SMP irq_lock() compatibility layer 2018-05-02 10:00:17 -07:00
stack.c kernel: Wait queues aren't dlists anymore 2018-05-19 07:00:55 +03:00
sys_clock.c syscalls: remove policy from handler checks 2018-05-17 23:34:03 +03:00
system_work_q.c kernel: introduce stack definition macros 2017-06-09 18:53:28 -04:00
thread_abort.c syscalls: remove policy from handler checks 2018-05-17 23:34:03 +03:00
thread.c kernel: fix errno access for user mode 2018-07-19 16:44:59 -07:00
timer.c kernel: Fix sloppy wait queue API 2018-05-18 01:48:48 +03:00
userspace_handler.c syscalls: remove policy from handler checks 2018-05-17 23:34:03 +03:00
userspace.c userspace: generate list of kernel object sizes 2018-05-16 17:32:59 -07:00
version.c kernel: version: no need to store version in RAM 2017-09-07 16:34:50 -07:00
work_q.c work_q: Correctly clear pending flag in delayed work queue, update docs 2018-02-13 18:08:57 -05:00