zephyr/include
Andy Ross 2724fd11cb kernel: SMP-aware scheduler
The scheduler needs a few tweaks to work in SMP mode:

1. The "cache" field just doesn't work.  With more than one CPU,
   caching the highest priority thread isn't useful as you may need N
   of them at any given time before another thread is returned to the
   scheduler.  You could recalculate it at every change, but that
   provides no performance benefit.  Remove.

2. The "bitmask" designed to prevent the need to individually check
   priorities is likewise dropped.  This could work, but in fact on
   our only current SMP system and with current K_NUM_PRIOPRITIES
   values it provides no real benefit.

3. The individual threads now have a "current cpu" and "active" flag
   so that the choice of the next thread to run can correctly skip
   threads that are active on other CPUs.

The upshot is that a decent amount of code gets #if'd out, and the new
SMP implementations for _get_highest_ready_prio() and
_get_next_ready_thread() are simpler and smaller, at the expense of
having to drop older optimizations.

Note that scheduler synchronization is unchanged: all scheduler APIs
used to require that an irq_lock() be held, which means that they now
require the global spinlock via the same API.  This should be a very
early candidate for lock granularity attention!

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-02-16 10:44:29 -05:00
..
arch xtensa: Remove arch-specific (and empty) offsets.h 2018-02-16 10:44:29 -05:00
bluetooth Bluetooth: Mesh: Convert to new net_buf_simple APIs 2018-02-13 14:00:08 +02:00
crypto crypto: Remove useless attribute 2017-04-27 13:06:31 +00:00
debug debug: remove DEBUG_INFO option 2018-02-12 13:58:28 -08:00
dfu dfu: mcuboot: add boot_read_bank_header() 2018-02-05 06:42:15 -08:00
display doc: APIs: group display drivers 2017-11-17 17:14:18 -05:00
drivers native: added stdin handling for shell 2018-02-02 07:48:46 -08:00
dt-bindings drivers: spi_ll_stm32: Enable SPI driver for F1 family 2018-02-01 08:19:49 -06:00
fs subsys: fs: consolidate elm FAT kconfig options 2017-10-03 08:43:50 -04:00
linker linker: arm: add stm32 ccm sections 2018-02-13 12:36:22 -06:00
logging include: logging: clean up of sys_log.h 2018-02-09 10:11:52 -05:00
misc native: __ASSERT() to immediately terminate 2018-02-14 22:23:52 -05:00
net net: buf: Use __noinit where possible 2018-02-14 15:44:04 +02:00
posix kernel: move posix header to posix/ 2017-12-27 14:16:08 -05:00
random subsys: Add random subsystem 2017-11-01 08:26:29 -04:00
shell doc: fix misspellings in doxygen API comments 2018-01-30 20:04:21 -05:00
toolchain toolchain: gcc/common: add header guard 2018-02-10 11:14:32 -05:00
usb usb: hid: Remove duplicated definitions 2018-02-05 06:39:50 -08:00
zephyr Introduce new sized integer typedefs 2017-04-20 16:07:08 +00:00
adc.h drivers: adc: add system call handlers 2017-10-30 13:20:19 -07:00
aio_comparator.h drivers: aio_comparator: add system calls 2017-10-30 13:20:19 -07:00
atomic.h license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
cache.h license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
clock_control.h Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
console.h doc: fix misspellings in include (API docs) 2017-08-10 12:22:19 -04:00
counter.h doc: add missing API content 2017-12-01 08:58:56 -05:00
crc8.h lib: crc: Add crc8-ccitt implementation 2018-01-15 15:46:37 -05:00
crc16.h crc: add crc16_itu_t which is used in the MMC protocol. 2018-02-07 16:49:52 -05:00
device.h device: cleanup header layout 2018-02-07 13:07:46 -05:00
disk_access.h disk: delete the GET_DISK_SIZE IOCTL. 2018-01-31 09:14:40 -05:00
dma.h dma: Fix building when system calls are disabled 2018-02-13 10:32:41 -05:00
entropy.h drivers: Rename random to entropy 2017-11-01 08:26:29 -04:00
eth.h Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
fcb.h subsys: fs: fcb: remove f_area_id from fcb structure 2018-02-07 09:51:26 -05:00
flash.h flash: minor documentation improvements. 2017-11-28 12:25:19 -05:00
flash_map.h subsys: storage: flash_map: Fix warning 2018-02-14 14:36:52 -05:00
fs.h doc: add missing API content 2017-12-01 08:58:56 -05:00
gpio.h drivers: gpio: deprecate GPIO_PIN_ENABLE, GPIO_PIN_DISABLE 2017-11-02 18:46:30 -04:00
i2c.h drivers: i2c: add system call handlers 2017-10-30 13:20:19 -07:00
i2s.h doc: replace UTF-8 chars 2017-10-03 20:03:57 -04:00
init.h kernel: remove deprecated init levels 2017-04-07 17:45:34 +00:00
ipm.h drivers: ipm: add system calls 2017-10-30 13:20:19 -07:00
irq.h kernel: Make irq_{un}lock() APIs into a global spinlock in SMP mode 2018-02-16 10:44:29 -05:00
irq_offload.h license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
json.h doc: json: add to doxygen group 2017-11-22 13:27:01 -05:00
kernel.h kernel: SMP-aware scheduler 2018-02-16 10:44:29 -05:00
kernel_version.h kernel: version: parenthesize macro value 2018-01-04 13:29:03 -05:00
led_strip.h drivers: led_strip: add public API for addressable LED strips 2017-10-28 13:23:30 -04:00
pinmux.h pinmux: add two more entries to the function enum. 2018-02-05 06:31:35 -08:00
power.h Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
pwm.h drivers: pwm: add system call handlers 2017-10-30 13:20:19 -07:00
ring_buffer.h ring_buffer: remove broken object_tracing support 2018-01-18 17:44:38 -05:00
rtc.h drivers: rtc: add system calls 2017-10-30 13:20:19 -07:00
sensor.h sensors: sensor_value: Elaborate docs 2018-02-15 12:55:50 -05:00
shared_irq.h Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
spi.h drivers: spi: add system call handlers 2017-10-30 13:20:19 -07:00
spi_legacy.h api: New SPI API 2017-05-19 18:52:25 -04:00
spinlock.h kernel: Simple spinlock API 2018-02-16 10:44:29 -05:00
sw_isr_table.h sw_isr_table.h: fix includes 2017-10-27 16:08:54 -04:00
sys_clock.h kernel: tickless: Add tickless kernel support 2017-04-27 13:46:28 +00:00
sys_io.h sys_io.h: don't pull in kernel.h 2017-11-02 13:25:01 -07:00
syscall.h kernel: allow system call with 64-bit return val 2017-10-12 16:25:00 -07:00
toolchain.h xtensa: move byte-order macros out of arch.h 2017-05-11 12:47:23 -04:00
uart.h drivers: uart: add system call handlers 2017-10-30 13:20:19 -07:00
watchdog.h Convert remaining code to using newly introduced integer sized types 2017-04-21 11:38:23 -05:00
zephyr.h kernel: remove legacy.h and MDEF support 2017-04-19 10:59:35 -05:00