zephyr/include
Benjamin Walsh 983cbe398c unified/x86: add unified kernel support for x86 arch
The x86 architecture port is fitted with support for the unified kernel,
namely:

- the interrupt exit code now calls _Swap() if the current
  thread is not a coop thread and if the scheduler is not locked

- there is no 'task' fields in the _nanokernel anymore: _Swap()
  now calls _get_next_ready_thread instead

- the _nanokernel.fiber field is replaced by a more sophisticated
  ready_q, based on the microkernel's priority-bitmap-based one

- nano_private includes nano_internal.h from the unified directory

- the FIBER, TASK and PREEMPTIBLE flags do not exist anymore: the thread
  priority drives the behaviour

- the tcs uses a dlist for queuing in both ready and wait queues instead
  of a custom singly-linked list

- other new fields in the tcs include a schedule-lock count, a
  back-pointer to init data (when the task is static) and a pointer to
  swap data, needed when a thread pending on _Swap() must be passed more
  then just one value (e.g. k_stack_pop() needs an error code and data)

- fiberRtnValueSet() is aliased to _set_thread_return_value since it
  also operates on preempt threads now

- _set_thread_return_value_with_data() sets the swap_data field in
  addition to a return value from _Swap()

- convenience aliases are created for shorter names:

  - _current is defined as _nanokernel.current
  - _ready_q is defined as _nanokernel.ready_q

- _Swap() sets the threads's return code to -EAGAIN before swapping out
  to prevent timeouts to have to set it (solves hard issues in some
  kernel objects).

- Floating point support.

Note that, in _Swap(), the register holding the thread to be swapped in has
been changed from %ecx to %eax in both the legacy kernel and the unified kernel
to take advantage of the fact that the return value of _get_next_ready_thread()
is stored in %eax, and this avoids moving it to %ecx.

Work by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
         Allan Stephens <allan.stephens@windriver.com>
	 Benjamin Walsh <benjamin.walsh@windriver.com>

Change-Id: I4ce2bd47bcdc62034c669b5e889fc0f29480c43b
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-09-13 17:12:55 -04:00
..
arch unified/x86: add unified kernel support for x86 arch 2016-09-13 17:12:55 -04:00
bluetooth Bluetooth: RFCOMM: Implement TX flow control 2016-09-07 07:22:32 +00:00
display drivers: Replace DEV_OK by 0 2016-03-16 19:30:04 -04:00
drivers power_mgmt: Make device_pm_ops definition static 2016-09-12 00:28:05 +00:00
fs fs: Adds the glue layer for the Fat FS module 2016-08-01 16:47:33 -07:00
microkernel microkernel: remove deprecated task IRQs 2016-09-06 16:15:59 +00:00
misc slist: add sys_slist_append_list and sys_slist_merge_slist() 2016-09-13 17:12:55 -04:00
net net: Fix net_send return value documentation 2016-09-12 02:19:57 +00:00
toolchain kernel: abolish FUNC_NO_FP 2016-09-09 21:13:30 +00:00
usb usb: Add Bluetooth class codes definitions 2016-08-10 15:27:35 +00:00
adc.h drivers: Replace DEV_OK by 0 2016-03-16 19:30:04 -04:00
aio_comparator.h c++: Add extern "C" { } block to header files 2016-02-05 20:25:22 -05:00
atomic.h atomic.h: change to ATOMIC_DEFINE 2016-07-27 14:42:44 +00:00
cache.h cache: add implementation for cache-less systems 2016-02-05 20:25:24 -05:00
clock_control.h clock_control: extend API with clock rate query operation 2016-03-16 18:09:32 +00:00
counter.h doc: counter should be under device driver 2016-04-15 18:42:17 +00:00
device.h power_mgmt: Make device_pm_ops definition static 2016-09-12 00:28:05 +00:00
dma.h doc: fix warnings about undefined ref and group without end. 2016-06-22 16:44:20 -05:00
eth.h driver: ENC28J60 Ethernet SPI module 2016-08-05 20:36:44 +00:00
flash.h flash: update API documentation 2016-05-25 13:30:41 +00:00
fs.h doc: Fixes a typo in the file system documentation 2016-08-05 23:14:25 +00:00
gpio.h gpio: add device config helpers 2016-06-22 16:47:16 +00:00
i2c.h i2c: Fix restart flag in burst read 2016-09-07 14:40:20 +00:00
init.h init: document SYS_INIT and SYS_INIT_PM 2016-09-08 17:15:11 +00:00
ipm.h doc: Fix terminology in Kconfig files for 'platform' 2016-08-18 21:17:29 +00:00
irq_offload.h doc: Fix misuse of @file doxygen tag 2016-02-11 20:11:03 +00:00
irq.h zephyr: remove deprecated dynamic interrupt API 2016-09-06 16:16:00 +00:00
kernel_version.h c++: Add extern "C" { } block to header files 2016-02-05 20:25:22 -05:00
linker-defs.h nanokernel: move dataCopy() and bssZero() to common code 2016-07-08 18:23:11 +00:00
linker-tool-gcc.h nios2: basic build, non-functional 2016-05-03 23:18:45 +00:00
linker-tool.h Fixed file description and applied doxygen style 2016-02-05 20:24:58 -05:00
microkernel.h microkernel: remove deprecated task IRQs 2016-09-06 16:15:59 +00:00
nanokernel.h nanokernel: add nano_fifo_put_list() APIs 2016-06-13 20:24:41 +00:00
pinmux.h doc: fix "WARNING: Error in type declaration." in callback typedefs 2016-06-16 13:11:06 -07:00
power.h doc: power_mgmt: Added Power Management documentation 2016-04-27 00:57:53 +00:00
pwm.h drivers: pwm_shim: correct api argument inconsistency 2016-08-25 14:24:03 -07:00
rtc.h c++: Add extern "C" { } block to header files 2016-02-05 20:25:22 -05:00
section_tags.h ARM: ARC: put sw_isr_table in ROM by default 2016-02-05 20:25:21 -05:00
sections.h ARM: ARC: put sw_isr_table in ROM by default 2016-02-05 20:25:21 -05:00
sensor.h doc: revert unnamed union/struct workaround in favour of known-issues 2016-07-01 21:53:45 +00:00
shared_irq.h c++: Add extern "C" { } block to header files 2016-02-05 20:25:22 -05:00
spi.h drivers: spi: Update comment for spi config parameter 2016-08-10 15:06:23 +00:00
sw_isr_table.h nios2: add static interrupt handling code 2016-06-22 16:42:21 +00:00
sys_clock.h sys_clock: Add a helper to compute micro seconds 2016-04-07 16:51:07 +00:00
sys_io.h sys_io: don't allow negative bit offsets 2016-03-04 16:26:21 +00:00
toolchain.h doc: revert unnamed union/struct workaround in favour of known-issues 2016-07-01 21:53:45 +00:00
uart.h uart.h: fix path to PCI headers 2016-08-12 22:57:57 +00:00
watchdog.h c++: Add extern "C" { } block to header files 2016-02-05 20:25:22 -05:00
zephyr.h