Date   

Re: RFC: Counter driver API

Andre Guedes <andre.guedes@...>
 

Hi guys,

Quoting Tseng, Kuo-Lang (2016-02-26 17:29:17)
Background
--------------

On Quark (SE and D2000), there are Always On Counter (free running) and Always ON Periodic Timer devices. A counter|timer driver is to be added for supporting these devices. At same time, the goal is to create an API that is generic enough for not just these two specific devices.
As a generic API we should be able to address counters devices with different
features such as counting up and counting down, free running, periodic and
one-shot for instance.

I was exercising this API and I think it might not handle properly counting
up devices with interrupt support since the matching value (which generates
the interrupt) cannot be set.

I'd like to suggest a few changes based on the original proposal (and the
feedback already provided) that I think will enable us to handle counter
device with different features.

/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_start(struct device *dev);

/**
* @brief Stop counter device.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev);

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
*
* @brief Set an alarm callback.
* @param dev Pointer to the device structure for the driver instance.
* @param callback Pointer to the callback function.
* @param count Number of counter ticks.
*
* @retval DEV_OK If successful.
* @retval DEV_NO_SUPPORT if the device doesn't support interrupt (e.g.
* free running counters).
*/
int counter_set_alarm(struct device *dev, void (*callback)(void *data), int count);

Regards,

Andre


Proposal:
-----------

Generic counter driver API:
-------------------------------
We will have 3 routines - start, stop, and read, which takes in the device pointer - which identifies the timer. The driver header, counter.h, is under /include folder:

/**
* @brief Set up counter configuration and start it.
* @param dev Pointer to the device structure for the driver instance.
* @param config Pointer to counter configuration structure
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_start(struct device *dev, counter_input *config);

/**
* @brief Stop the counter.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev)

The counter_input structure can be something like below:

/**
* @brief Counter configuration.
*
* Acceptable setting in the configuration structure is hardware-specific.
*
* initial_value - Initial value to load to the counter or timer.
* callback - Callback function when timer expires.
*/
struct counter_input {
uint32_t initial_value;
void (*callback)(void);
};

Note - Using structure, tomorrow we can add more fields for a counter with more features.
For the Free Running counter in Quark, these fields would be null as it does not support interrupt or callback notification.

The hardware-specific driver implementation:
-----------------------------------

This can be implemented in /drivers directory. For example, for Quark SE and D2000, we can have below file which implements the API functionality using the AON Counter and AON Periodic Timer:

drivers/quark_aon_counter.c

Comment, feedback welcome.


Re: RFC: Use error codes from errno.h

Jesus Sanchez-Palencia <jesus.sanchez-palencia@...>
 

On Wed, 2 Mar 2016 16:03:22 -0300
Jesus Sanchez-Palencia <jesus.sanchez-palencia(a)intel.com> wrote:

Hi,

On Thu, 18 Feb 2016 17:47:56 -0200
Andre Guedes <andre.guedes(a)intel.com> wrote:

Hi all,

While we were discussing about adding a new error code for device.h (see
"[RFC] Add DEV_NOT_IMPLEMENTED error code" thread), we had an initial
agreement that it does make sense to use error codes from errno.h instead
of the ones from include/device.h. Since this topic deserves its own RFC,
I'm sending this email so we can have a proper discussion.
Cool!
+1 from my side, mainly so we don't need to discuss the addition of new error codes ever again :).


So the main points in favor of this change are 1) errno.h is a well-known
error convention which pretty much all developer is familiar with, 2)
errno.h codes address what we need, 3) no need to create new codes such
as DEV_NOT_IMPLEMENTED for instance, and 4) changing the current drivers
to use errno.h codes instead of DEV_* is a feasible task.
I would say it's more about 3) and 4) really, as I've seen surprisingly often how 1) and 2) are not
always true. I've seen recently people getting confused about what to return and when, myself
included. In the end it doesn't matter from each .h file you get the errors from, as long as you
have clear guidelines for them, in my opinion.


The initial discussion was about using errno.h codes at the driver's layer
but I think we can expand it to the whole system. Actually, errno.h codes
are already used in net/bluetooth and net/ip.
+1 ! But I would propose that we first get this right for the device driver APIs.

What we have on device.h currently is:

/* Common Error Codes devices can provide */
#define DEV_OK 0 /* No error */
#define DEV_FAIL 1 /* General operation failure */
#define DEV_INVALID_OP 2 /* Invalid operation */
#define DEV_INVALID_CONF 3 /* Invalid configuration */
#define DEV_USED 4 /* Device controller in use */
#define DEV_NO_ACCESS 5 /* Controller not accessible */
#define DEV_NO_SUPPORT 6 /* Device type not supported */
#define DEV_NOT_CONFIG 7 /* Device not configured */


I liked Dirk's suggestion on the previous thread, so I'm gonna propose 2 quick steps:
a- let's try to map each of this to errno codes;
b- let's document when we should return each of them.

You probably have b) ready from the other thread as well, so let me give it a try with a).
If we get this two right, then we end up with both the guidelines for documenting and the
transition patch Dirk suggested. After he deprecates DEV_*, moving to errno codes will be as easy
as a few seds. So:

I forgot to mention that whichever guidelines come out of this thread, I will move to QMSI so we
are all aligned.



DEV_OK = 0
DEV_FAIL = (??)
DEV_INVALID_OP = -EPERM or -ENOTSUP (??)
DEV_INVALID_CONF = -EINVAL
DEV_USED = -EBUSY
DEV_NO_ACCESS = -EAGAIN
DEV_NO_SUPPORT = -ENODEV or -ENXIO (??)
DEV_NOT_CONFIG = (??)
DEV_NOT_IMPLEMENTED = -ENOSYS
*this last one is from your previous RFC.


How bad does that look?!



Regards,
jesus


Re: RFC: Counter driver API

Tseng, Kuo-Lang <kuo-lang.tseng@...>
 

-----Original Message-----
From: Guedes, Andre
Sent: Wednesday, March 02, 2016 11:05 AM
To: Tseng, Kuo-Lang <kuo-lang.tseng(a)intel.com>; devel(a)lists.zephyrproject.org
Subject: Re: [devel] RFC: Counter driver API

Hi guys,

Quoting Tseng, Kuo-Lang (2016-02-26 17:29:17)
Background
--------------

On Quark (SE and D2000), there are Always On Counter (free running) and Always
ON Periodic Timer devices. A counter|timer driver is to be added for supporting
these devices. At same time, the goal is to create an API that is generic enough for
not just these two specific devices.

As a generic API we should be able to address counters devices with different
features such as counting up and counting down, free running, periodic and one-
shot for instance.

I was exercising this API and I think it might not handle properly counting up devices
with interrupt support since the matching value (which generates the interrupt)
cannot be set.
Correct. Good point.


I'd like to suggest a few changes based on the original proposal (and the feedback
already provided) that I think will enable us to handle counter device with different
features.

/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_start(struct device *dev);

/**
* @brief Stop counter device.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev);

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
*
* @brief Set an alarm callback.
* @param dev Pointer to the device structure for the driver instance.
* @param callback Pointer to the callback function.
* @param count Number of counter ticks.
*
* @retval DEV_OK If successful.
* @retval DEV_NO_SUPPORT if the device doesn't support interrupt (e.g.
* free running counters).
*/
int counter_set_alarm(struct device *dev, void (*callback)(void *data), int count);
Makes sense. This will work for both count-up timer and counting-down timer.


Regards,

Andre


Proposal:
-----------

Generic counter driver API:
-------------------------------
We will have 3 routines - start, stop, and read, which takes in the device pointer -
which identifies the timer. The driver header, counter.h, is under /include folder:

/**
* @brief Set up counter configuration and start it.
* @param dev Pointer to the device structure for the driver instance.
* @param config Pointer to counter configuration structure
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_start(struct device *dev, counter_input *config);

/**
* @brief Stop the counter.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev)

The counter_input structure can be something like below:

/**
* @brief Counter configuration.
*
* Acceptable setting in the configuration structure is hardware-specific.
*
* initial_value - Initial value to load to the counter or timer.
* callback - Callback function when timer expires.
*/
struct counter_input {
uint32_t initial_value;
void (*callback)(void);
};

Note - Using structure, tomorrow we can add more fields for a counter with more
features.
For the Free Running counter in Quark, these fields would be null as it does not
support interrupt or callback notification.

The hardware-specific driver implementation:
-----------------------------------

This can be implemented in /drivers directory. For example, for Quark SE and
D2000, we can have below file which implements the API functionality using the
AON Counter and AON Periodic Timer:

drivers/quark_aon_counter.c

Comment, feedback welcome.


Re: RFC: Use error codes from errno.h

Kalowsky, Daniel <daniel.kalowsky@...>
 

-----Original Message-----
From: Jesus Sanchez-Palencia [mailto:jesus.sanchez-palencia(a)intel.com]
Sent: Wednesday, March 2, 2016 11:03 AM
To: Guedes, Andre <andre.guedes(a)intel.com>
Cc: devel(a)lists.zephyrproject.org
Subject: [devel] Re: RFC: Use error codes from errno.h

Hi,

On Thu, 18 Feb 2016 17:47:56 -0200
Andre Guedes <andre.guedes(a)intel.com> wrote:

Hi all,

While we were discussing about adding a new error code for device.h (see
"[RFC] Add DEV_NOT_IMPLEMENTED error code" thread), we had an initial
agreement that it does make sense to use error codes from errno.h
instead
of the ones from include/device.h. Since this topic deserves its own RFC,
I'm sending this email so we can have a proper discussion.
Cool!
+1 from my side, mainly so we don't need to discuss the addition of new
error codes ever again :).


So the main points in favor of this change are 1) errno.h is a well-known
error convention which pretty much all developer is familiar with, 2)
errno.h codes address what we need, 3) no need to create new codes such
as DEV_NOT_IMPLEMENTED for instance, and 4) changing the current
drivers
to use errno.h codes instead of DEV_* is a feasible task.
I would say it's more about 3) and 4) really, as I've seen surprisingly often
how 1) and 2) are not
always true. I've seen recently people getting confused about what to return
and when, myself
included. In the end it doesn't matter from each .h file you get the errors
from, as long as you
have clear guidelines for them, in my opinion.


The initial discussion was about using errno.h codes at the driver's layer
but I think we can expand it to the whole system. Actually, errno.h codes
are already used in net/bluetooth and net/ip.
+1 ! But I would propose that we first get this right for the device driver APIs.

What we have on device.h currently is:

/* Common Error Codes devices can provide */
#define DEV_OK 0 /* No error */
#define DEV_FAIL 1 /* General operation failure */
#define DEV_INVALID_OP 2 /* Invalid operation */
#define DEV_INVALID_CONF 3 /* Invalid configuration */
#define DEV_USED 4 /* Device controller in use */
#define DEV_NO_ACCESS 5 /* Controller not accessible */
#define DEV_NO_SUPPORT 6 /* Device type not supported */
#define DEV_NOT_CONFIG 7 /* Device not configured */


I liked Dirk's suggestion on the previous thread, so I'm gonna propose 2 quick
steps:
a- let's try to map each of this to errno codes;
b- let's document when we should return each of them.

You probably have b) ready from the other thread as well, so let me give it a
try with a).
If we get this two right, then we end up with both the guidelines for
documenting and the
transition patch Dirk suggested. After he deprecates DEV_*, moving to errno
codes will be as easy
as a few seds. So:
This is proposal is very similar to what we had done originally for the devices instead of using the DEV_ names.


DEV_OK = 0
DEV_FAIL = (??)
EFAULT

DEV_INVALID_OP = -EPERM or -ENOTSUP (??)
ESRCH

DEV_INVALID_CONF = -EINVAL
DEV_USED = -EBUSY
DEV_NO_ACCESS = -EAGAIN
DEV_NO_SUPPORT = -ENODEV or -ENXIO (??)
ENOTSUP

DEV_NOT_CONFIG = (??)
EIO

DEV_NOT_IMPLEMENTED = -ENOSYS
*this last one is from your previous RFC.


How bad does that look?!


Re: RFC: Use error codes from errno.h

Johan Hedberg
 

Hi Jesus,

On Wed, Mar 02, 2016, Jesus Sanchez-Palencia wrote:
DEV_OK = 0
DEV_FAIL = (??)
DEV_INVALID_OP = -EPERM or -ENOTSUP (??)
DEV_INVALID_CONF = -EINVAL
DEV_USED = -EBUSY
DEV_NO_ACCESS = -EAGAIN
-EACCES? EAGAIN doesn't seem like the best match here.

Johan


Re: [RFC v2] uart: add ISR callback mechanism for UART drivers

Andre Guedes <andre.guedes@...>
 

Hi Daniel,

Quoting Daniel Leung (2016-03-01 21:04:02)
The peripherals utilizing UART were required to register their own
ISR rountines. This means that all those peripherals drivers need
to know which IRQ line is attached to a UART controller, and all
the other config values required to register a ISR. This causes
scalibility issue as every board and peripherals have to define
those values.

Another reason for this patch is to support virtual serial ports.
Virtual serial ports do not have physical interrupt lines to
attach, and thus would not work.

This patch adds a simple callback mechanism, which calls a function
when UART interrupts are triggered. The low level plumbing still needs
to be done by the peripheral drivers, as these drivers may need to
access low level capability of UART to function correctly. This simply
moves the interrupt setup into the UART drivers themselves. By doing
this, the peripheral drivers do not need to know all the config values
to properly setup the interrupts and attaching the ISR. One drawback
is that this adds to the interrupt latency.
This is actually a nice improvement on the UART API since it moves the
burden of registering the ISR from the user layer to the driver layer,
which is the right place, IMO.

Actually, the UART API is very low level when we compare it with other
APIs such as SPI and I2C. For instance, the UART API exposes functions
to manipulate the FIFOs and check for interrupt flags. Is there any plan
to add higher level APIs such as "transmit the characters from this buffer
and call this callback once the transmission finishes" or "read 10
characters into this buffer and call this callback once it is done"?

Regards,

Andre


Note that this patch breaks backward compatibility in terms of
setting up interrupt for UART controller. How to use UART is still
the same.

This also addresses the following issues:

() UART driver for Atmel SAM3 currently does not support interrupts.
So remove the code from vector table. This will be updated when
there is interrupt support for the driver.
() Corrected some config options for Stellaris UART driver.

This was tested with samples/shell on Arduino 101, and on QEMU
(Cortex-M3 and x86).

[v2: missed the NBLE UART for v1. Fixed in v2.]

Origin: Origin
Change-Id: Ib4593d8ccd711f4e97d388c7293205d213be1aec
Signed-off-by: Daniel Leung <daniel.leung(a)intel.com>
---
arch/arc/soc/quark_se_ss/Kconfig | 4 -
arch/arm/soc/atmel_sam3/Kconfig | 4 -
arch/arm/soc/atmel_sam3/irq_vector_table.c | 16 ---
arch/arm/soc/fsl_frdm_k64f/Kconfig | 8 --
arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c | 51 +++++++---
arch/arm/soc/ti_lm3s6965/Kconfig | 20 ++--
arch/arm/soc/ti_lm3s6965/irq_vector_table.c | 39 ++++---
arch/x86/soc/atom/Kconfig | 12 ---
arch/x86/soc/ia32/Kconfig | 12 ---
arch/x86/soc/quark_d2000/Kconfig | 12 ---
arch/x86/soc/quark_se/Kconfig | 8 --
arch/x86/soc/quark_x1000/Kconfig | 8 --
boards/arduino_101/Kconfig | 8 --
drivers/bluetooth/Kconfig | 14 ---
drivers/bluetooth/h4.c | 7 +-
drivers/bluetooth/h5.c | 8 +-
drivers/console/Kconfig | 28 ------
drivers/console/uart_console.c | 7 +-
drivers/console/uart_pipe.c | 8 +-
drivers/nble/Kconfig | 14 ---
drivers/nble/uart.c | 8 +-
drivers/serial/uart_k20.c | 140 ++++++++++++++++++++++++++
drivers/serial/uart_k20.h | 26 +++++
drivers/serial/uart_ns16550.c | 79 +++++++++++++++
drivers/serial/uart_stellaris.c | 103 +++++++++++++++++++
drivers/serial/uart_stellaris.h | 26 +++++
include/drivers/console/uart_console.h | 2 -
include/drivers/console/uart_pipe.h | 9 --
include/uart.h | 41 ++++++++
29 files changed, 490 insertions(+), 232 deletions(-)
create mode 100644 drivers/serial/uart_k20.h
create mode 100644 drivers/serial/uart_stellaris.h

diff --git a/arch/arc/soc/quark_se_ss/Kconfig b/arch/arc/soc/quark_se_ss/Kconfig
index d6d1b90..827cafa 100644
--- a/arch/arc/soc/quark_se_ss/Kconfig
+++ b/arch/arc/soc/quark_se_ss/Kconfig
@@ -161,10 +161,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_1"
-config UART_CONSOLE_IRQ
- default 42
-config UART_CONSOLE_IRQ_PRI
- default 1

endif

diff --git a/arch/arm/soc/atmel_sam3/Kconfig b/arch/arm/soc/atmel_sam3/Kconfig
index a7cf5cc..9b880e9 100644
--- a/arch/arm/soc/atmel_sam3/Kconfig
+++ b/arch/arm/soc/atmel_sam3/Kconfig
@@ -148,10 +148,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 8
-config UART_CONSOLE_IRQ_PRI
- default 3

endif # UART_CONSOLE

diff --git a/arch/arm/soc/atmel_sam3/irq_vector_table.c b/arch/arm/soc/atmel_sam3/irq_vector_table.c
index 24b1dcd..5f53773 100644
--- a/arch/arm/soc/atmel_sam3/irq_vector_table.c
+++ b/arch/arm/soc/atmel_sam3/irq_vector_table.c
@@ -32,11 +32,6 @@
#include <toolchain.h>
#include <sections.h>

-#if defined(CONFIG_CONSOLE_HANDLER)
-#include <soc.h>
-#include <console/uart_console.h>
-#endif /* CONFIG_CONSOLE_HANDLER */
-
extern void _isr_wrapper(void);
typedef void (*vth)(void); /* Vector Table Handler */

@@ -50,20 +45,9 @@ vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {

extern void _irq_spurious(void);

-#if defined(CONFIG_CONSOLE_HANDLER)
-static void _uart_console_isr(void)
-{
- uart_console_isr(NULL);
- _IntExit();
-}
-#endif /* CONFIG_CONSOLE_HANDLER */
-
/* placeholders: fill with real ISRs */
vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {
[0 ...(CONFIG_NUM_IRQS - 1)] = _irq_spurious,
-#if defined(CONFIG_CONSOLE_HANDLER)
- [CONFIG_UART_CONSOLE_IRQ] = _uart_console_isr,
-#endif
};

#endif /* CONFIG_SW_ISR_TABLE */
diff --git a/arch/arm/soc/fsl_frdm_k64f/Kconfig b/arch/arm/soc/fsl_frdm_k64f/Kconfig
index 7ffec5e..7a1fa30 100644
--- a/arch/arm/soc/fsl_frdm_k64f/Kconfig
+++ b/arch/arm/soc/fsl_frdm_k64f/Kconfig
@@ -141,10 +141,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 31
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -152,10 +148,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 33
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

diff --git a/arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c b/arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c
index d36abca..8c02ec4 100644
--- a/arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c
+++ b/arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c
@@ -31,15 +31,8 @@
#include <toolchain.h>
#include <sections.h>

-#if defined(CONFIG_CONSOLE_HANDLER)
#include <soc.h>
-#include <console/uart_console.h>
-#endif /* CONFIG_CONSOLE_HANDLER */
-
-#if defined(CONFIG_BLUETOOTH_UART)
-#include <soc.h>
-#include <bluetooth/uart.h>
-#endif /* CONFIG_BLUETOOTH_UART */
+#include <serial/uart_k20.h>

extern void _isr_wrapper(void);
typedef void (*vth)(void); /* Vector Table Handler */
@@ -54,10 +47,34 @@ vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {

extern void _irq_spurious(void);

-#if defined(CONFIG_CONSOLE_HANDLER)
-static void _uart_console_isr(void)
+#if defined(CONFIG_UART_INTERRUPT_DRIVEN)
+static void _uart_k20_0_isr(void)
+{
+ uart_k20_isr(DEVICE_GET(uart_k20_0));
+ _IntExit();
+}
+
+static void _uart_k20_1_isr(void)
+{
+ uart_k20_isr(DEVICE_GET(uart_k20_1));
+ _IntExit();
+}
+
+static void _uart_k20_2_isr(void)
+{
+ uart_k20_isr(DEVICE_GET(uart_k20_2));
+ _IntExit();
+}
+
+static void _uart_k20_3_isr(void)
+{
+ uart_k20_isr(DEVICE_GET(uart_k20_3));
+ _IntExit();
+}
+
+static void _uart_k20_4_isr(void)
{
- uart_console_isr(NULL);
+ uart_k20_isr(DEVICE_GET(uart_k20_4));
_IntExit();
}
#endif /* CONFIG_CONSOLE_HANDLER */
@@ -73,11 +90,13 @@ static void _bt_uart_isr(void)
/* placeholders: fill with real ISRs */
vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {
[0 ...(CONFIG_NUM_IRQS - 1)] = _irq_spurious,
-#if defined(CONFIG_CONSOLE_HANDLER)
- [CONFIG_UART_CONSOLE_IRQ] = _uart_console_isr,
-#endif
-#if defined(CONFIG_BLUETOOTH_UART)
- [CONFIG_BLUETOOTH_UART_IRQ] = _bt_uart_isr,
+
+#if defined(CONFIG_UART_INTERRUPT_DRIVEN)
+ [CONFIG_UART_K20_PORT_0_IRQ] = _uart_k20_0_isr,
+ [CONFIG_UART_K20_PORT_1_IRQ] = _uart_k20_1_isr,
+ [CONFIG_UART_K20_PORT_2_IRQ] = _uart_k20_2_isr,
+ [CONFIG_UART_K20_PORT_3_IRQ] = _uart_k20_3_isr,
+ [CONFIG_UART_K20_PORT_4_IRQ] = _uart_k20_4_isr,
#endif
};

diff --git a/arch/arm/soc/ti_lm3s6965/Kconfig b/arch/arm/soc/ti_lm3s6965/Kconfig
index a9b32a2..fa643ba 100644
--- a/arch/arm/soc/ti_lm3s6965/Kconfig
+++ b/arch/arm/soc/ti_lm3s6965/Kconfig
@@ -66,7 +66,9 @@ if UART_STELLARIS_PORT_0
config UART_STELLARIS_PORT_0_BASE_ADDR
default 0x4000C000
config UART_STELLARIS_PORT_0_IRQ
- default 6
+ default 5
+config UART_STELLARIS_PORT_0_IRQ_PRI
+ default 3
config UART_STELLARIS_PORT_0_BAUD_RATE
default 115200
config UART_STELLARIS_PORT_0_CLK_FREQ
@@ -81,6 +83,8 @@ config UART_STELLARIS_PORT_1_BASE_ADDR
default 0x4000D000
config UART_STELLARIS_PORT_1_IRQ
default 6
+config UART_STELLARIS_PORT_1_IRQ_PRI
+ default 3
config UART_STELLARIS_PORT_1_BAUD_RATE
default 115200
config UART_STELLARIS_PORT_1_CLK_FREQ
@@ -94,6 +98,8 @@ config UART_STELLARIS_PORT_2_BASE_ADDR
default 0x4000E000
config UART_STELLARIS_PORT_2_IRQ
default 33
+config UART_STELLARIS_PORT_2_IRQ_PRI
+ default 3
config UART_STELLARIS_PORT_2_BAUD_RATE
default 115200
config UART_STELLARIS_PORT_2_CLK_FREQ
@@ -106,10 +112,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 5
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -117,10 +119,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 6
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

@@ -128,10 +126,6 @@ if UART_PIPE

config UART_PIPE_ON_DEV_NAME
default "UART_2"
-config UART_PIPE_IRQ
- default 33
-config UART_PIPE_IRQ_PRI
- default 3

endif

diff --git a/arch/arm/soc/ti_lm3s6965/irq_vector_table.c b/arch/arm/soc/ti_lm3s6965/irq_vector_table.c
index d36abca..4d931f6 100644
--- a/arch/arm/soc/ti_lm3s6965/irq_vector_table.c
+++ b/arch/arm/soc/ti_lm3s6965/irq_vector_table.c
@@ -31,15 +31,8 @@
#include <toolchain.h>
#include <sections.h>

-#if defined(CONFIG_CONSOLE_HANDLER)
#include <soc.h>
-#include <console/uart_console.h>
-#endif /* CONFIG_CONSOLE_HANDLER */
-
-#if defined(CONFIG_BLUETOOTH_UART)
-#include <soc.h>
-#include <bluetooth/uart.h>
-#endif /* CONFIG_BLUETOOTH_UART */
+#include <serial/uart_stellaris.h>

extern void _isr_wrapper(void);
typedef void (*vth)(void); /* Vector Table Handler */
@@ -54,30 +47,34 @@ vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {

extern void _irq_spurious(void);

-#if defined(CONFIG_CONSOLE_HANDLER)
-static void _uart_console_isr(void)
+#if defined(CONFIG_UART_INTERRUPT_DRIVEN)
+static void _uart_stellaris_port_0_isr(void)
+{
+ uart_stellaris_isr(DEVICE_GET(uart_stellaris0));
+ _IntExit();
+}
+
+static void _uart_stellaris_port_1_isr(void)
{
- uart_console_isr(NULL);
+ uart_stellaris_isr(DEVICE_GET(uart_stellaris1));
_IntExit();
}
-#endif /* CONFIG_CONSOLE_HANDLER */

-#if defined(CONFIG_BLUETOOTH_UART)
-static void _bt_uart_isr(void)
+static void _uart_stellaris_port_2_isr(void)
{
- bt_uart_isr(NULL);
+ uart_stellaris_isr(DEVICE_GET(uart_stellaris2));
_IntExit();
}
-#endif /* CONFIG_BLUETOOTH_UART */
+#endif /* CONFIG_UART_INTERRUPT_DRIVEN */

/* placeholders: fill with real ISRs */
vth __irq_vector_table _irq_vector_table[CONFIG_NUM_IRQS] = {
[0 ...(CONFIG_NUM_IRQS - 1)] = _irq_spurious,
-#if defined(CONFIG_CONSOLE_HANDLER)
- [CONFIG_UART_CONSOLE_IRQ] = _uart_console_isr,
-#endif
-#if defined(CONFIG_BLUETOOTH_UART)
- [CONFIG_BLUETOOTH_UART_IRQ] = _bt_uart_isr,
+
+#if defined(CONFIG_UART_INTERRUPT_DRIVEN)
+ [UART_STELLARIS_PORT_0_IRQ] = _uart_stellaris_port_0_isr,
+ [UART_STELLARIS_PORT_1_IRQ] = _uart_stellaris_port_1_isr,
+ [UART_STELLARIS_PORT_2_IRQ] = _uart_stellaris_port_2_isr,
#endif
};

diff --git a/arch/x86/soc/atom/Kconfig b/arch/x86/soc/atom/Kconfig
index c9b7f5f..f085985 100644
--- a/arch/x86/soc/atom/Kconfig
+++ b/arch/x86/soc/atom/Kconfig
@@ -105,10 +105,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 4
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -116,10 +112,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 3
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

@@ -127,10 +119,6 @@ if UART_PIPE

config UART_PIPE_ON_DEV_NAME
default "UART_1"
-config UART_PIPE_IRQ
- default 3
-config UART_PIPE_IRQ_PRI
- default 3

endif

diff --git a/arch/x86/soc/ia32/Kconfig b/arch/x86/soc/ia32/Kconfig
index f9916ba..6025697 100644
--- a/arch/x86/soc/ia32/Kconfig
+++ b/arch/x86/soc/ia32/Kconfig
@@ -105,10 +105,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 4
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -116,10 +112,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 3
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

@@ -127,10 +119,6 @@ if UART_PIPE

config UART_PIPE_ON_DEV_NAME
default "UART_1"
-config UART_PIPE_IRQ
- default 3
-config UART_PIPE_IRQ_PRI
- default 3

endif

diff --git a/arch/x86/soc/quark_d2000/Kconfig b/arch/x86/soc/quark_d2000/Kconfig
index da8a1be..5d11114 100644
--- a/arch/x86/soc/quark_d2000/Kconfig
+++ b/arch/x86/soc/quark_d2000/Kconfig
@@ -127,10 +127,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_0"
-config UART_CONSOLE_IRQ
- default 8
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -138,10 +134,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 6
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

@@ -149,10 +141,6 @@ if UART_PIPE

config UART_PIPE_ON_DEV_NAME
default "UART_1"
-config UART_PIPE_IRQ
- default 6
-config UART_PIPE_IRQ_PRI
- default 3

endif

diff --git a/arch/x86/soc/quark_se/Kconfig b/arch/x86/soc/quark_se/Kconfig
index a17110d..8922f2d 100644
--- a/arch/x86/soc/quark_se/Kconfig
+++ b/arch/x86/soc/quark_se/Kconfig
@@ -376,10 +376,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_1"
-config UART_CONSOLE_IRQ
- default 6
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -387,10 +383,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 38
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

diff --git a/arch/x86/soc/quark_x1000/Kconfig b/arch/x86/soc/quark_x1000/Kconfig
index ed7514d..3357d2c 100644
--- a/arch/x86/soc/quark_x1000/Kconfig
+++ b/arch/x86/soc/quark_x1000/Kconfig
@@ -343,10 +343,6 @@ if UART_CONSOLE

config UART_CONSOLE_ON_DEV_NAME
default "UART_1"
-config UART_CONSOLE_IRQ
- default 17
-config UART_CONSOLE_IRQ_PRI
- default 3

endif

@@ -354,10 +350,6 @@ if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
default "UART_1"
-config BLUETOOTH_UART_IRQ
- default 17
-config BLUETOOTH_UART_IRQ_PRI
- default 3

endif

diff --git a/boards/arduino_101/Kconfig b/boards/arduino_101/Kconfig
index 8d047dd..9bacabf 100644
--- a/boards/arduino_101/Kconfig
+++ b/boards/arduino_101/Kconfig
@@ -11,10 +11,6 @@ config GPIO

config NBLE_UART_ON_DEV_NAME
default UART_NS16550_PORT_0_NAME
-config NBLE_UART_IRQ
- default UART_NS16550_PORT_0_IRQ
-config NBLE_UART_IRQ_PRI
- default UART_NS16550_PORT_0_IRQ_PRI

endif

@@ -22,10 +18,6 @@ if UART_PIPE

config UART_PIPE_ON_DEV_NAME
default UART_NS16550_PORT_1_NAME
-config UART_PIPE_IRQ
- default UART_NS16550_PORT_1_IRQ
-config UART_PIPE_IRQ_PRI
- default UART_NS16550_PORT_1_IRQ_PRI

endif

diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
index c48e3f5..879dd47 100644
--- a/drivers/bluetooth/Kconfig
+++ b/drivers/bluetooth/Kconfig
@@ -71,20 +71,6 @@ config BLUETOOTH_UART_ON_DEV_NAME
This option specifies the name of UART device to be used
for Bluetooth.

-config BLUETOOTH_UART_IRQ
- int "IRQ of UART Device for Bluetooth"
- depends on BLUETOOTH_UART
- help
- This option specifies the IRQ of UART device to be used
- for Bluetooth.
-
-config BLUETOOTH_UART_IRQ_PRI
- int "IRQ Priority of UART Device for Bluetooth"
- depends on BLUETOOTH_UART
- help
- This option specifies the IRQ priority of UART device to be used
- for Bluetooth.
-
# Headroom that the driver needs for sending and receiving buffers.
# Add a new 'default' entry for each new driver.

diff --git a/drivers/bluetooth/h4.c b/drivers/bluetooth/h4.c
index 6fbf7f2..0fc3abd 100644
--- a/drivers/bluetooth/h4.c
+++ b/drivers/bluetooth/h4.c
@@ -123,7 +123,7 @@ static struct net_buf *h4_acl_recv(int *remaining)
return buf;
}

-void bt_uart_isr(void *unused)
+static void bt_uart_isr(struct device *unused)
{
static struct net_buf *buf;
static int remaining;
@@ -223,9 +223,6 @@ static int h4_open(void)

uart_irq_rx_disable(h4_dev);
uart_irq_tx_disable(h4_dev);
- IRQ_CONNECT(CONFIG_BLUETOOTH_UART_IRQ, CONFIG_BLUETOOTH_UART_IRQ_PRI,
- bt_uart_isr, 0, UART_IRQ_FLAGS);
- irq_enable(CONFIG_BLUETOOTH_UART_IRQ);

/* Drain the fifo */
while (uart_irq_rx_ready(h4_dev)) {
@@ -234,6 +231,8 @@ static int h4_open(void)
uart_fifo_read(h4_dev, &c, 1);
}

+ uart_irq_callback_set(h4_dev, bt_uart_isr);
+
uart_irq_rx_enable(h4_dev);

return 0;
diff --git a/drivers/bluetooth/h5.c b/drivers/bluetooth/h5.c
index 5a6a4ba..562b0e7 100644
--- a/drivers/bluetooth/h5.c
+++ b/drivers/bluetooth/h5.c
@@ -445,7 +445,7 @@ static void h5_process_complete_packet(uint8_t *hdr)
}
}

-void bt_uart_isr(void *unused)
+static void bt_uart_isr(struct device *unused)
{
static int remaining;
uint8_t byte;
@@ -748,10 +748,6 @@ static int h5_open(void)
uart_irq_rx_disable(h5_dev);
uart_irq_tx_disable(h5_dev);

- IRQ_CONNECT(CONFIG_BLUETOOTH_UART_IRQ, CONFIG_BLUETOOTH_UART_IRQ_PRI,
- bt_uart_isr, 0, UART_IRQ_FLAGS);
- irq_enable(CONFIG_BLUETOOTH_UART_IRQ);
-
/* Drain the fifo */
while (uart_irq_rx_ready(h5_dev)) {
unsigned char c;
@@ -759,6 +755,8 @@ static int h5_open(void)
uart_fifo_read(h5_dev, &c, 1);
}

+ uart_irq_callback_set(h5_dev, bt_uart_isr);
+
h5_init();

uart_irq_rx_enable(h5_dev);
diff --git a/drivers/console/Kconfig b/drivers/console/Kconfig
index c8dc686..0638f70 100644
--- a/drivers/console/Kconfig
+++ b/drivers/console/Kconfig
@@ -73,20 +73,6 @@ config UART_CONSOLE_ON_DEV_NAME
This option specifies the name of UART device to be used for
UART console.

-config UART_CONSOLE_IRQ
- int "IRQ of UART Device for UART Console"
- depends on UART_CONSOLE
- help
- This option specifies the IRQ of UART device to be used for
- UART console.
-
-config UART_CONSOLE_IRQ_PRI
- int "IRQ of UART Device for UART Console"
- depends on UART_CONSOLE
- help
- This option specifies the IRQ priorityof UART device to be
- used for UART console.
-
config UART_CONSOLE_PRIORITY
int
prompt "Init priority"
@@ -160,18 +146,4 @@ config UART_PIPE_ON_DEV_NAME
This option specifies the name of UART device to be used
for pipe UART.

-config UART_PIPE_IRQ
- int "IRQ for pipe UART"
- depends on UART_PIPE
- help
- This option specifies the IRQ of UART device to be used
- for pipe UART.
-
-config UART_PIPE_IRQ_PRI
- int "IRQ Priority for pipe UART"
- depends on UART_PIPE
- help
- This option specifies the IRQ priority of UART device
- to be used for pipe UART.
-
endif
diff --git a/drivers/console/uart_console.c b/drivers/console/uart_console.c
index 762b7aa..72c5631 100644
--- a/drivers/console/uart_console.c
+++ b/drivers/console/uart_console.c
@@ -278,7 +278,7 @@ ansi_cmd:
atomic_clear_bit(&esc_state, ESC_ANSI);
}

-void uart_console_isr(void *unused)
+void uart_console_isr(struct device *unused)
{
ARG_UNUSED(unused);

@@ -373,9 +373,8 @@ static void console_input_init(void)

uart_irq_rx_disable(uart_console_dev);
uart_irq_tx_disable(uart_console_dev);
- IRQ_CONNECT(CONFIG_UART_CONSOLE_IRQ, CONFIG_UART_CONSOLE_IRQ_PRI,
- uart_console_isr, 0, UART_IRQ_FLAGS);
- irq_enable(CONFIG_UART_CONSOLE_IRQ);
+
+ uart_irq_callback_set(uart_console_dev, uart_console_isr);

/* Drain the fifo */
while (uart_irq_rx_ready(uart_console_dev)) {
diff --git a/drivers/console/uart_pipe.c b/drivers/console/uart_pipe.c
index f56f9b1..c8c89ae 100644
--- a/drivers/console/uart_pipe.c
+++ b/drivers/console/uart_pipe.c
@@ -36,7 +36,7 @@ static size_t recv_buf_len;
static uart_pipe_recv_cb app_cb;
static size_t recv_off;

-void uart_pipe_isr(void *unused)
+static void uart_pipe_isr(struct device *unused)
{
ARG_UNUSED(unused);

@@ -77,10 +77,6 @@ static void uart_pipe_setup(struct device *uart)
uart_irq_rx_disable(uart);
uart_irq_tx_disable(uart);

- IRQ_CONNECT(CONFIG_UART_PIPE_IRQ, CONFIG_UART_PIPE_IRQ_PRI,
- uart_pipe_isr, 0, UART_IRQ_FLAGS);
- irq_enable(CONFIG_UART_PIPE_IRQ);
-
/* Drain the fifo */
while (uart_irq_rx_ready(uart)) {
unsigned char c;
@@ -88,6 +84,8 @@ static void uart_pipe_setup(struct device *uart)
uart_fifo_read(uart, &c, 1);
}

+ uart_irq_callback_set(uart, uart_pipe_isr);
+
uart_irq_rx_enable(uart);
}

diff --git a/drivers/nble/Kconfig b/drivers/nble/Kconfig
index c7cfa7e..e52e3ed 100644
--- a/drivers/nble/Kconfig
+++ b/drivers/nble/Kconfig
@@ -120,18 +120,4 @@ config NBLE_UART_ON_DEV_NAME
This option specifies the name of UART device to be used
for Nordic BLE.

-config NBLE_UART_IRQ
- int "IRQ of UART Device for Nordic BLE"
- depends on NBLE
- help
- This option specifies the IRQ of UART device to be used
- for Nordic BLE.
-
-config NBLE_UART_IRQ_PRI
- int "IRQ Priority of UART Device for Nordic BLE"
- depends on NBLE
- help
- This option specifies the IRQ priority of UART device to be used
- for Nordic BLE.
-
endif
diff --git a/drivers/nble/uart.c b/drivers/nble/uart.c
index f42904c..378c580 100644
--- a/drivers/nble/uart.c
+++ b/drivers/nble/uart.c
@@ -125,7 +125,7 @@ static size_t nble_discard(struct device *uart, size_t len)
return uart_fifo_read(uart, buf, min(len, sizeof(buf)));
}

-void bt_uart_isr(void *unused)
+static void bt_uart_isr(struct device *unused)
{
static struct net_buf *buf;

@@ -206,10 +206,6 @@ int nble_open(void)
uart_irq_rx_disable(nble_dev);
uart_irq_tx_disable(nble_dev);

- IRQ_CONNECT(CONFIG_NBLE_UART_IRQ, CONFIG_NBLE_UART_IRQ_PRI,
- bt_uart_isr, 0, UART_IRQ_FLAGS);
- irq_enable(CONFIG_NBLE_UART_IRQ);
-
/* Drain the fifo */
while (uart_irq_rx_ready(nble_dev)) {
unsigned char c;
@@ -217,6 +213,8 @@ int nble_open(void)
uart_fifo_read(nble_dev, &c, 1);
}

+ uart_irq_callback_set(nble_dev, bt_uart_isr);
+
uart_irq_rx_enable(nble_dev);

return 0;
diff --git a/drivers/serial/uart_k20.c b/drivers/serial/uart_k20.c
index 3f0985e..5c261f0 100644
--- a/drivers/serial/uart_k20.c
+++ b/drivers/serial/uart_k20.c
@@ -31,6 +31,7 @@
#include <toolchain.h>
#include <sections.h>

+#include "uart_k20.h"
#include "uart_k20_priv.h"

/* convenience defines */
@@ -45,6 +46,10 @@
/* Device data structure */
struct uart_k20_dev_data_t {
uint32_t baud_rate; /* Baud rate */
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ uart_irq_callback_t cb; /**< Callback function pointer */
+#endif
};

static struct uart_driver_api uart_k20_driver_api;
@@ -90,6 +95,10 @@ static int uart_k20_init(struct device *dev)
/* restore interrupt state */
irq_unlock(old_level);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ dev_cfg->irq_config_func(dev);
+#endif
+
dev->driver_api = &uart_k20_driver_api;

return DEV_OK;
@@ -339,6 +348,41 @@ static int uart_k20_irq_update(struct device *dev)
return 1;
}

+/**
+ * @brief Set the callback function pointer for IRQ.
+ *
+ * @param dev UART device struct
+ * @param cb Callback function pointer.
+ *
+ * @return N/A
+ */
+static void uart_k20_irq_callback_set(struct device *dev,
+ uart_irq_callback_t cb)
+{
+ struct uart_k20_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ dev_data->cb = cb;
+}
+
+/**
+ * @brief Interrupt service routine.
+ *
+ * This simply calls the callback function, if one exists.
+ *
+ * @param arg Argument to ISR.
+ *
+ * @return N/A
+ */
+void uart_k20_isr(void *arg)
+{
+ struct device *dev = arg;
+ struct uart_k20_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ if (dev_data->cb) {
+ dev_data->cb(dev);
+ }
+}
+
#endif /* CONFIG_UART_INTERRUPT_DRIVEN */


@@ -360,6 +404,7 @@ static struct uart_driver_api uart_k20_driver_api = {
.irq_err_disable = uart_k20_irq_err_disable,
.irq_is_pending = uart_k20_irq_is_pending,
.irq_update = uart_k20_irq_update,
+ .irq_callback_set = uart_k20_irq_callback_set,

#endif
};
@@ -367,9 +412,17 @@ static struct uart_driver_api uart_k20_driver_api = {

#ifdef CONFIG_UART_K20_PORT_0

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *port);
+#endif
+
static struct uart_device_config uart_k20_dev_cfg_0 = {
.base = (uint8_t *)CONFIG_UART_K20_PORT_0_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_K20_PORT_0_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_0,
+#endif
};

static struct uart_k20_dev_data_t uart_k20_dev_data_0 = {
@@ -380,13 +433,32 @@ DEVICE_INIT(uart_k20_0, CONFIG_UART_K20_PORT_0_NAME, &uart_k20_init,
&uart_k20_dev_data_0, &uart_k20_dev_cfg_0,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_K20_PORT_0_IRQ,
+ CONFIG_UART_K20_PORT_0_IRQ_PRI,
+ uart_k20_isr, DEVICE_GET(uart_k20_0),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_K20_PORT_0_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_K20_PORT_0 */

#ifdef CONFIG_UART_K20_PORT_1

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *port);
+#endif
+
static struct uart_device_config uart_k20_dev_cfg_1 = {
.base = (uint8_t *)CONFIG_UART_K20_PORT_1_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_K20_PORT_1_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_1,
+#endif
};

static struct uart_k20_dev_data_t uart_k20_dev_data_1 = {
@@ -397,13 +469,32 @@ DEVICE_INIT(uart_k20_1, CONFIG_UART_K20_PORT_1_NAME, &uart_k20_init,
&uart_k20_dev_data_1, &uart_k20_dev_cfg_1,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_K20_PORT_1_IRQ,
+ CONFIG_UART_K20_PORT_1_IRQ_PRI,
+ uart_k20_isr, DEVICE_GET(uart_k20_1),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_K20_PORT_1_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_K20_PORT_1 */

#ifdef CONFIG_UART_K20_PORT_2

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_2(struct device *port);
+#endif
+
static struct uart_device_config uart_k20_dev_cfg_2 = {
.base = (uint8_t *)CONFIG_UART_K20_PORT_2_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_K20_PORT_2_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_2,
+#endif
};

static struct uart_k20_dev_data_t uart_k20_dev_data_2 = {
@@ -414,13 +505,32 @@ DEVICE_INIT(uart_k20_2, CONFIG_UART_K20_PORT_2_NAME, &uart_k20_init,
&uart_k20_dev_data_2, &uart_k20_dev_cfg_2,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_2(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_K20_PORT_2_IRQ,
+ CONFIG_UART_K20_PORT_2_IRQ_PRI,
+ uart_k20_isr, DEVICE_GET(uart_k20_2),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_K20_PORT_2_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_K20_PORT_2 */

#ifdef CONFIG_UART_K20_PORT_3

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_3(struct device *port);
+#endif
+
static struct uart_device_config uart_k20_dev_cfg_3 = {
.base = (uint8_t *)CONFIG_UART_K20_PORT_3_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_K20_PORT_3_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_3,
+#endif
};

static struct uart_k20_dev_data_t uart_k20_dev_data_3 = {
@@ -431,13 +541,32 @@ DEVICE_INIT(uart_k20_3, CONFIG_UART_K20_PORT_3_NAME, &uart_k20_init,
&uart_k20_dev_data_3, &uart_k20_dev_cfg_3,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_3(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_K20_PORT_3_IRQ,
+ CONFIG_UART_K20_PORT_3_IRQ_PRI,
+ uart_k20_isr, DEVICE_GET(uart_k20_3),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_K20_PORT_3_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_K20_PORT_3 */

#ifdef CONFIG_UART_K20_PORT_4

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_4(struct device *port);
+#endif
+
static struct uart_device_config uart_k20_dev_cfg_4 = {
.base = (uint8_t *)CONFIG_UART_K20_PORT_4_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_K20_PORT_4_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_4,
+#endif
};

static struct uart_k20_dev_data_t uart_k20_dev_data_4 = {
@@ -448,4 +577,15 @@ DEVICE_INIT(uart_k20_4, CONFIG_UART_K20_PORT_4_NAME, &uart_k20_init,
&uart_k20_dev_data_4, &uart_k20_dev_cfg_4,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_4(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_K20_PORT_4_IRQ,
+ CONFIG_UART_K20_PORT_4_IRQ_PRI,
+ uart_k20_isr, DEVICE_GET(uart_k20_4),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_K20_PORT_4_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_K20_PORT_4 */
diff --git a/drivers/serial/uart_k20.h b/drivers/serial/uart_k20.h
new file mode 100644
index 0000000..ca92859
--- /dev/null
+++ b/drivers/serial/uart_k20.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016 Intel Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file UART header file for the K20 family of microprocessors..
+ */
+
+#ifndef _UART_K20_H_
+#define _UART_K20_H_
+
+void uart_k20_isr(void *arg);
+
+#endif /* _UART_K20_H_ */
diff --git a/drivers/serial/uart_ns16550.c b/drivers/serial/uart_ns16550.c
index 543f7a0..f6b0b2e 100644
--- a/drivers/serial/uart_ns16550.c
+++ b/drivers/serial/uart_ns16550.c
@@ -210,6 +210,7 @@ struct uart_ns16550_dev_data_t {

#ifdef CONFIG_UART_INTERRUPT_DRIVEN
uint8_t iir_cache; /**< cache of IIR since it clears when read */
+ uart_irq_callback_t cb; /**< Callback function pointer */
#endif

#ifdef CONFIG_UART_NS16550_DLF
@@ -336,6 +337,10 @@ static int uart_ns16550_init(struct device *dev)

irq_unlock(old_level);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ DEV_CFG(dev)->irq_config_func(dev);
+#endif
+
dev->driver_api = &uart_ns16550_driver_api;

return DEV_OK;
@@ -576,6 +581,41 @@ static int uart_ns16550_irq_update(struct device *dev)
return 1;
}

+/**
+ * @brief Set the callback function pointer for IRQ.
+ *
+ * @param dev UART device struct
+ * @param cb Callback function pointer.
+ *
+ * @return N/A
+ */
+static void uart_ns16550_irq_callback_set(struct device *dev,
+ uart_irq_callback_t cb)
+{
+ struct uart_ns16550_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ dev_data->cb = cb;
+}
+
+/**
+ * @brief Interrupt service routine.
+ *
+ * This simply calls the callback function, if one exists.
+ *
+ * @param arg Argument to ISR.
+ *
+ * @return N/A
+ */
+static void uart_ns16550_isr(void *arg)
+{
+ struct device *dev = arg;
+ struct uart_ns16550_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ if (dev_data->cb) {
+ dev_data->cb(dev);
+ }
+}
+
#endif /* CONFIG_UART_INTERRUPT_DRIVEN */

#ifdef CONFIG_UART_NS16550_LINE_CTRL
@@ -671,6 +711,7 @@ static struct uart_driver_api uart_ns16550_driver_api = {
.irq_err_disable = uart_ns16550_irq_err_disable,
.irq_is_pending = uart_ns16550_irq_is_pending,
.irq_update = uart_ns16550_irq_update,
+ .irq_callback_set = uart_ns16550_irq_callback_set,

#endif

@@ -685,6 +726,10 @@ static struct uart_driver_api uart_ns16550_driver_api = {

#ifdef CONFIG_UART_NS16550_PORT_0

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *port);
+#endif
+
struct uart_device_config uart_ns16550_dev_cfg_0 = {
.port = CONFIG_UART_NS16550_PORT_0_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_NS16550_PORT_0_CLK_FREQ,
@@ -698,6 +743,10 @@ struct uart_device_config uart_ns16550_dev_cfg_0 = {
.pci_dev.function = CONFIG_UART_NS16550_PORT_0_PCI_FUNC,
.pci_dev.bar = CONFIG_UART_NS16550_PORT_0_PCI_BAR,
#endif /* CONFIG_UART_NS16550_PORT_0_PCI */
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_0,
+#endif
};

static struct uart_ns16550_dev_data_t uart_ns16550_dev_data_0 = {
@@ -713,10 +762,25 @@ DEVICE_INIT(uart_ns16550_0, CONFIG_UART_NS16550_PORT_0_NAME, &uart_ns16550_init,
&uart_ns16550_dev_data_0, &uart_ns16550_dev_cfg_0,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_NS16550_PORT_0_IRQ,
+ CONFIG_UART_NS16550_PORT_0_IRQ_PRI,
+ uart_ns16550_isr, DEVICE_GET(uart_ns16550_0),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_NS16550_PORT_0_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_NS16550_PORT_0 */

#ifdef CONFIG_UART_NS16550_PORT_1

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *port);
+#endif
+
struct uart_device_config uart_ns16550_dev_cfg_1 = {
.port = CONFIG_UART_NS16550_PORT_1_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_NS16550_PORT_1_CLK_FREQ,
@@ -730,6 +794,10 @@ struct uart_device_config uart_ns16550_dev_cfg_1 = {
.pci_dev.function = CONFIG_UART_NS16550_PORT_1_PCI_FUNC,
.pci_dev.bar = CONFIG_UART_NS16550_PORT_1_PCI_BAR,
#endif /* CONFIG_UART_NS16550_PORT_1_PCI */
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_1,
+#endif
};

static struct uart_ns16550_dev_data_t uart_ns16550_dev_data_1 = {
@@ -745,4 +813,15 @@ DEVICE_INIT(uart_ns16550_1, CONFIG_UART_NS16550_PORT_1_NAME, &uart_ns16550_init,
&uart_ns16550_dev_data_1, &uart_ns16550_dev_cfg_1,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_NS16550_PORT_1_IRQ,
+ CONFIG_UART_NS16550_PORT_1_IRQ_PRI,
+ uart_ns16550_isr, DEVICE_GET(uart_ns16550_1),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_NS16550_PORT_1_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_NS16550_PORT_1 */
diff --git a/drivers/serial/uart_stellaris.c b/drivers/serial/uart_stellaris.c
index 3a6ea16..eaaa10e 100644
--- a/drivers/serial/uart_stellaris.c
+++ b/drivers/serial/uart_stellaris.c
@@ -34,6 +34,8 @@
#include <uart.h>
#include <sections.h>

+#include "uart_stellaris.h"
+
/* definitions */

/* Stellaris UART module */
@@ -76,6 +78,10 @@ struct _uart {
/* Device data structure */
struct uart_stellaris_dev_data_t {
uint32_t baud_rate; /* Baud rate */
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ uart_irq_callback_t cb; /**< Callback function pointer */
+#endif
};

/* convenience defines */
@@ -271,6 +277,10 @@ static int uart_stellaris_init(struct device *dev)
line_control_defaults_set(dev);
enable(dev);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ DEV_CFG(dev)->irq_config_func(dev);
+#endif
+
dev->driver_api = &uart_stellaris_driver_api;

return DEV_OK;
@@ -565,6 +575,41 @@ static int uart_stellaris_irq_update(struct device *dev)
return 1;
}

+/**
+ * @brief Set the callback function pointer for IRQ.
+ *
+ * @param dev UART device struct
+ * @param cb Callback function pointer.
+ *
+ * @return N/A
+ */
+static void uart_stellaris_irq_callback_set(struct device *dev,
+ uart_irq_callback_t cb)
+{
+ struct uart_stellaris_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ dev_data->cb = cb;
+}
+
+/**
+ * @brief Interrupt service routine.
+ *
+ * This simply calls the callback function, if one exists.
+ *
+ * @param arg Argument to ISR.
+ *
+ * @return N/A
+ */
+void uart_stellaris_isr(void *arg)
+{
+ struct device *dev = arg;
+ struct uart_stellaris_dev_data_t * const dev_data = DEV_DATA(dev);
+
+ if (dev_data->cb) {
+ dev_data->cb(dev);
+ }
+}
+
#endif /* CONFIG_UART_INTERRUPT_DRIVEN */


@@ -586,6 +631,7 @@ static struct uart_driver_api uart_stellaris_driver_api = {
.irq_err_disable = uart_stellaris_irq_err_disable,
.irq_is_pending = uart_stellaris_irq_is_pending,
.irq_update = uart_stellaris_irq_update,
+ .irq_callback_set = uart_stellaris_irq_callback_set,

#endif
};
@@ -593,9 +639,17 @@ static struct uart_driver_api uart_stellaris_driver_api = {

#ifdef CONFIG_UART_STELLARIS_PORT_0

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *port);
+#endif
+
static struct uart_device_config uart_stellaris_dev_cfg_0 = {
.base = (uint8_t *)CONFIG_UART_STELLARIS_PORT_0_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_STELLARIS_PORT_0_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_0,
+#endif
};

static struct uart_stellaris_dev_data_t uart_stellaris_dev_data_0 = {
@@ -606,13 +660,32 @@ DEVICE_INIT(uart_stellaris0, CONFIG_UART_STELLARIS_PORT_0_NAME, &uart_stellaris_
&uart_stellaris_dev_data_0, &uart_stellaris_dev_cfg_0,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_0(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_STELLARIS_PORT_0_IRQ,
+ CONFIG_UART_STELLARIS_PORT_0_IRQ_PRI,
+ uart_stellaris_isr, DEVICE_GET(uart_stellaris0),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_STELLARIS_PORT_0_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_STELLARIS_PORT_0 */

#ifdef CONFIG_UART_STELLARIS_PORT_1

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *port);
+#endif
+
static struct uart_device_config uart_stellaris_dev_cfg_1 = {
.base = (uint8_t *)CONFIG_UART_STELLARIS_PORT_1_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_STELLARIS_PORT_1_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_1,
+#endif
};

static struct uart_stellaris_dev_data_t uart_stellaris_dev_data_1 = {
@@ -623,13 +696,32 @@ DEVICE_INIT(uart_stellaris1, CONFIG_UART_STELLARIS_PORT_1_NAME, &uart_stellaris_
&uart_stellaris_dev_data_1, &uart_stellaris_dev_cfg_1,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_1(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_STELLARIS_PORT_1_IRQ,
+ CONFIG_UART_STELLARIS_PORT_1_IRQ_PRI,
+ uart_stellaris_isr, DEVICE_GET(uart_stellaris1),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_STELLARIS_PORT_1_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_STELLARIS_PORT_1 */

#ifdef CONFIG_UART_STELLARIS_PORT_2

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_2(struct device *port);
+#endif
+
static struct uart_device_config uart_stellaris_dev_cfg_2 = {
.base = (uint8_t *)CONFIG_UART_STELLARIS_PORT_2_BASE_ADDR,
.sys_clk_freq = CONFIG_UART_STELLARIS_PORT_2_CLK_FREQ,
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ .irq_config_func = irq_config_func_2,
+#endif
};

static struct uart_stellaris_dev_data_t uart_stellaris_dev_data_2 = {
@@ -640,4 +732,15 @@ DEVICE_INIT(uart_stellaris2, CONFIG_UART_STELLARIS_PORT_2_NAME, &uart_stellaris_
&uart_stellaris_dev_data_2, &uart_stellaris_dev_cfg_2,
PRIMARY, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);

+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+static void irq_config_func_2(struct device *dev)
+{
+ IRQ_CONNECT(CONFIG_UART_STELLARIS_PORT_2_IRQ,
+ CONFIG_UART_STELLARIS_PORT_2_IRQ_PRI,
+ uart_stellaris_isr, DEVICE_GET(uart_stellaris2),
+ UART_IRQ_FLAGS);
+ irq_enable(CONFIG_UART_STELLARIS_PORT_2_IRQ);
+}
+#endif
+
#endif /* CONFIG_UART_STELLARIS_PORT_2 */
diff --git a/drivers/serial/uart_stellaris.h b/drivers/serial/uart_stellaris.h
new file mode 100644
index 0000000..4a14ef3
--- /dev/null
+++ b/drivers/serial/uart_stellaris.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016 Intel Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file Header file for Stellaris UART.
+ */
+
+#ifndef _UART_STELLARIS_H_
+#define _UART_STELLARIS_H_
+
+void uart_console_isr(void *arg);
+
+#endif /* _UART_STELLARIS_H_ */
diff --git a/include/drivers/console/uart_console.h b/include/drivers/console/uart_console.h
index 4634e33..963e8af 100644
--- a/include/drivers/console/uart_console.h
+++ b/include/drivers/console/uart_console.h
@@ -46,8 +46,6 @@ struct uart_console_input {
*/
void uart_register_input(struct nano_fifo *avail, struct nano_fifo *lines);

-void uart_console_isr(void *unused);
-
#ifdef __cplusplus
}
#endif
diff --git a/include/drivers/console/uart_pipe.h b/include/drivers/console/uart_pipe.h
index 3b7594a..2391bbd 100644
--- a/include/drivers/console/uart_pipe.h
+++ b/include/drivers/console/uart_pipe.h
@@ -62,15 +62,6 @@ void uart_pipe_register(uint8_t *buf, size_t len, uart_pipe_recv_cb cb);
*/
int uart_pipe_send(const uint8_t *data, int len);

-/** @brief Simple UART interrupt handler.
- *
- * This function is called from an interrupt and should not be called by
- * an application directly.
- *
- * @param unused unused
- */
-void uart_pipe_isr(void *unused);
-
#ifdef __cplusplus
}
#endif
diff --git a/include/uart.h b/include/uart.h
index 66e5123..cba33c3 100644
--- a/include/uart.h
+++ b/include/uart.h
@@ -71,6 +71,16 @@ extern "C" {
*/
#define UART_ERROR_BREAK (1 << 3)

+/**
+ * @brief Define the application callback function signature for UART.
+ *
+ * @param port Device struct for the UART device.
+ */
+typedef void (*uart_irq_callback_t)(struct device *port);
+
+/* For configuring IRQ on each individual UART device. Internal use only. */
+typedef void (*uart_irq_config_func_t)(struct device *port);
+
/** @brief UART device configuration.*/
struct uart_device_config {
/**
@@ -90,6 +100,10 @@ struct uart_device_config {
#ifdef CONFIG_PCI
struct pci_dev_info pci_dev;
#endif /* CONFIG_PCI */
+
+#ifdef CONFIG_UART_INTERRUPT_DRIVEN
+ uart_irq_config_func_t irq_config_func;
+#endif
};

/** @brief Driver API structure. */
@@ -145,6 +159,9 @@ struct uart_driver_api {
/** Interrupt driven input hook function */
int (*irq_input_hook)(struct device *dev, uint8_t byte);

+ /** Set the callback function */
+ void (*irq_callback_set)(struct device *dev, uart_irq_callback_t cb);
+
#endif

#ifdef CONFIG_UART_LINE_CTRL
@@ -516,6 +533,30 @@ static inline void uart_irq_input_hook_set(struct device *dev,
}
}

+
+/**
+ * @brief Set the IRQ callback function pointer.
+ *
+ * This sets up the callback for IRQ. When an IRQ is triggered,
+ * the specified function will be called.
+ *
+ * @param dev UART device structure.
+ * @param cb Pointer to the callback function.
+ *
+ * @return N/A
+ */
+static inline void uart_irq_callback_set(struct device *dev,
+ uart_irq_callback_t cb)
+{
+ struct uart_driver_api *api;
+
+ api = (struct uart_driver_api *)dev->driver_api;
+
+ if ((api != NULL) && (api->irq_callback_set != NULL)) {
+ api->irq_callback_set(dev, cb);
+ }
+}
+
#endif

#ifdef CONFIG_UART_LINE_CTRL
--
2.7.2


Re: [RFC v2] uart: add ISR callback mechanism for UART drivers

Daniel Leung <daniel.leung@...>
 

On Wed, Mar 02, 2016 at 10:14:02PM -0300, Andre Guedes wrote:
Hi Daniel,

Quoting Daniel Leung (2016-03-01 21:04:02)
The peripherals utilizing UART were required to register their own
ISR rountines. This means that all those peripherals drivers need
to know which IRQ line is attached to a UART controller, and all
the other config values required to register a ISR. This causes
scalibility issue as every board and peripherals have to define
those values.

Another reason for this patch is to support virtual serial ports.
Virtual serial ports do not have physical interrupt lines to
attach, and thus would not work.

This patch adds a simple callback mechanism, which calls a function
when UART interrupts are triggered. The low level plumbing still needs
to be done by the peripheral drivers, as these drivers may need to
access low level capability of UART to function correctly. This simply
moves the interrupt setup into the UART drivers themselves. By doing
this, the peripheral drivers do not need to know all the config values
to properly setup the interrupts and attaching the ISR. One drawback
is that this adds to the interrupt latency.
This is actually a nice improvement on the UART API since it moves the
burden of registering the ISR from the user layer to the driver layer,
which is the right place, IMO.

Actually, the UART API is very low level when we compare it with other
APIs such as SPI and I2C. For instance, the UART API exposes functions
to manipulate the FIFOs and check for interrupt flags. Is there any plan
to add higher level APIs such as "transmit the characters from this buffer
and call this callback once the transmission finishes" or "read 10
characters into this buffer and call this callback once it is done"?
This is something I have thought about, but there is no concrete plan.

Is there anything particular you are looking for? Use cases would be
a good start. This helps me to understand what needs to be done.


-----
Daniel Leung


Zephyr 1.1.0-rc1 tagged

Nashif, Anas
 

Hi,
After resolving some issues with git and a slight delay, here is the first release candidate for Zephyr v1.1.0.

Below you will find all the changes since v1.0.0.

A summary of the changes since v1.0.0 will be provided in the final v1.1.0 release.


Thanks,
Anas



Aceves (3):
doc: Edit the heading markup
doc: Edit the microkernel FIFO
doc: Edit microkernel mailbox

Anas Nashif (55):
trivial: fixed typo: sempahores -> semaphores
doxygen: enable uart functions guarded by ifdef
doc: add brief description for Kconfig in the reference
doc: simplify supported board page
doc: create api directory
doc: fixed include path for input directories
scan for testcases in root to cover samples and tests
sanitychecks: add new keyword 'kernel' to testcase.ini
tests: move crypto tests to tests/crypto
tests: move bluetooth tests to tests/
tests: move kernel tests to tests/
tests: move aio and i2c driver build tests
move include directory for tests cases to tests/
move sample apps to top level directory under samples/
move net/buf test under tests/
nfc: move sample app under samples/nfc
move driver samples to samples/drivers
tests: remove redundant build tests
test_task: only microkernel version exist
test_task_irq: only microkernel version exist
test_task_priv: only microkernel version exist
test_ring_buf: only nanokernel version exist
test_rand32: only microkernel version exist
tests: test_fifo: unify nano and micro tests into one directory
move benchmark applications to tests/benchmark/
net: apps: Move net samples to one directory instead of per kernel
doc: fix path to samples after restructering
net: remove obsolete 15.4 test case
remove redundant checking for CONFIG_STACK_CANARIES
sanitychecks: update releas data after restructuring
samples: move bluetooth shell/init to tests
docs: Update information about tree structure
docs: fixed lists and indent for galileo
docs: fixed lists and indent for arduino_due
docs: fixed feature lists for quark_d2000_crb
docs: fixed indentation in gerrit practices
docs: fixed lists and indent for arduino_101
docs: doxygen: group driver APIs
docs: fixed API linking
improve 'make help' and remove config targets
Use .zephyrrc for initializing common variables
boards: remove obsolete CTB board
remove old and obsolete file
checkpatch: update checkpatch to latest from upstream
checkpatch: fix SPACE false positive
docs: gerrit: fix indentation and structure
docs: fix typo and table in collaboration guidelines
docs: fixed crypto headline and bullet indentation
docs: fix note indentation for arduino101 board
docs: fixed errors when building docs
docs: gerrit: descrease indentation and remove TOC
docs: arduino 101: remove zflash references
rtc: enable clock-gating for RTC on Quark SE
device: add missing license header
Zephyr 1.1.0-rc1

Andre Guedes (18):
samples: Add i2c_lsm9ds0 application
qmsi: Enable both I2C controllers by default
i2c: Enable QMSI driver for Quark D2000
rtc: Set DW driver as default for Quark SE and D2000
watchdog: Set DW driver as default for Quark SE and D2000
samples: rtc: Remove driver selection
gpio: Enable QMSI driver for Quark D2000
samples: gpio: Add support for Quark D2000
samples: rtc: Decrease alarm timeout value
samples: gpio: Remove driver selection
rtc: Remove default value from platform-specific options
watchdog: Remove default value from platform-specific options
samples: watchdog: Remove driver selection
spi: Enable QMSI driver for Quark D2000
samples: Add wiring info for Quark D2000 CRB
gpio: Remove default value from platform-specific options
spi: Remove default value from platform-specific options
i2c: Remove default value from platform-specific options

Andrei Emeltchenko (38):
Bluetooth: trivial: Remove empty line
drivers/nble: Add conn handle debug logs
drivers/nble: debug: Remove extensive debug
drivers/nble: Add BLUETOOTH_MAX_CONN option
drivers/nble: Add basic connection handling support
drivers/nble: Add configuration for device manager
drivers/nble: Update RPC to Nordic chip
drivers/nble: Add debug for SM config response
drivers/nble: Clean NBLE UART driver
drivers/nble: Use rsp instead of par
drivers/nble: Read local Bluetooth Address
drivers/nble: Print local Bluetooth address
drivers/nble: Update data types following RPC sync
drivers/nble: Add Kconfig option to debug UART driver
drivers/nble: Enable UART debug only if BLUETOOTH_DEBUG_DRIVER enabled
Bluetooth: Fix checking wrong variable
Bluetooth: Add missing print format specifier
drivers/nble: Change RPC following firmware update
drivers/nble: Update headers following new 0215 fw release
drivers/nble: Fix passing uninitialized callback
drivers/nble: Fix use of uninitialized status
drivers/nble: Fix use of uninitialized data
drivers/nble: Use weak function definitions
drivers/nble: gatt: Implement bt_gatt_discover()
drivers/nble: Remove not used version_header struct
drivers/nble: Clean up nble headers
drivers/nble: Update connect request parameters
drivers/nble: Implement bt_conn_create_le()
drivers/nble: Implement client scanning
drivers/nble: Decrease shell debug
drivers/nble: Enable NBLE GAP debug
drivers/nble: Add debug option for Nordic RPC
drivers/nble: Add connection states
drivers/nble: Implement bt_conn_disconnect()
drivers/nble: Cancel connect req when receiving disconnect cmd
drivers/nble: Fix function name
drivers/nble: Store GATT discover parameters
drivers/nble: Export bt_conn_lookup_handle()

Andrew Boie (11):
iamcu: fix dynamic exceptions
device: add DEVICE_DECLARE()
x86: rebase priority levels
x86: intconnect: convert some DEBUG to __ASSERT
ARM: rebase available priority levels to 0
x86: fix IDT entry definition
x86: add debug function to dump IDT
sanitycheck: add testcase.ini field for slow tests
sanitycheck: correctly treat linker warnings as errors
sanitycheck: use Python 3
irq: formalize external zephyr interrupt API

Andrew Grimberg (1):
Add a .gitreview file

Arkadiusz Lichwa (12):
Bluetooth: BR/EDR: Track 16 digits PIN code
Bluetooth: BR/EDR: Add user I/O context during pairing
Bluetooth: BR/EDR: Move part of BR/EDR core code up
Bluetooth: BR/EDR: Validate security on connection complete evt
Bluetooth: BR/EDR: Validate security on encryption change evt
Bluetooth: BR/EDR: Validate security on encryption key refresh evt
Bluetooth: BR/EDR: Rename local variable
Bluetooth: BR/EDR: Enable SSP mode in controller
Bluetooth: BR/EDR: Handle IO Capability Response event
Bluetooth: BR/EDR: Initial IO Capability reply to remote
Bluetooth: BR/EDR: Add initial SSP Complete
Bluetooth: BR/EDR: Add HCI SSP exchange IO Capa defines

Baohong Liu (1):
samples: A test app for WinBond spi flash

Benjamin Walsh (14):
device: fibers/idle task must wait when acquiring device_sync object
sys_clock: start the microkernel ticker in the MICROKERNEL init level
device: fix race condition in device_sync if ISR runs before thread waits
kbuild: support arbitrary dir for Makefile.app
sys_clock/microkernel: do not announce ticks until microkernel is up
Revert "sys_clock: start the microkernel ticker in the MICROKERNEL init level"
x1000/pci: fix coding standards
pci: trivial if statement refactoring
kernel: have _nano_timeout_abort() return an error code
kernel: record when a fiber is removed from a wait queue
kernel: fix xxx_fiber_wakeup() if the timeout has expired
kernel: add fiber_wakeup()
x86: move reboot via RST_CNT from galileo to generic x86
add missing license to zephyr-env.sh

Constanza Heath (1):
Updating TinyCrypt v2.0 documentation.

Dan Kalowsky (22):
struct packing
adc: dw: there is only one ADC
adc : ti : only one instance
adc : rename device to just ADC
samples : adc : fix build issues
nanokernel : clean up comments
spi : moving to a single SPI naming
samples : incorrectly addressing SPI port
correcting issues identified by coverity
docs : arduino_101 rom needs to be in correct location
docs : arduino 101 doc update
docs : arduino_101 : fix build command
docs : arduino_101 : build steps are incorrect
docs : setting_up : allow anonymous downloads
docs : setting up LF account
docs : gerrit_accounts : correct ssh key path
doc : remove \ from wget command
docs : arduino_101 : pins start at 1
doc : arduino_101 : Adding in step to power on device
doc : getting_started : wget no longer needs userid
doc : arduino_101 : add in udev rules
doc : getting_started : correct path

Daniel Leung (12):
arm/atmel_sam3: add PDC register struct
boards/arduino_due: enable both I2C controllers if CONFIG_I2C=y
i2c: adds driver for Atmel SAM3
doc/boards: updates arduino_due for supported features...
samples/footprint-min: turn off IPM for ARC
samples: test_tickless: enable test for Atmel SAM3
sanitycheck: enable build tests for Arduino Due
i2c: clarify API doc
gpio: clarify API doc
x86/quark_se: don't start ARC if reset vector is NULL
arc: remove defaults for IRQ priority levels
doc: arduino_due: make more visible on how to obtain bossa tool

Genaro Saucedo Tejada (1):
doc: Linux Foundation registration steps

Gerardo Aceves (4):
doc: Edit nanokernel API
doc: Edit functions.rst
doc: Edit defines.rst file
doc: Edit structs.rst file

Ido Yariv (1):
QEMU: Fix the pin2irq translation function

Iván Briano (3):
net: Include only the necessary headers
quark_se_devboard: Enable the PWM pins
libc-hooks: Make newlib's heap size configurable

Javier B Perez (2):
doc: getting started: update SDK location
doc: install linux: update SDK wget link

Jennifer Marandola (1):
doc: Doc updates for C++ feature with updates from code review.

Jesus Sanchez-Palencia (1):
cc2520: Parametrize driver configs

Jithu Joseph (1):
libc-hooks: newlib's heap may use entire unused RAM

Johan Hedberg (41):
drivers/console: Fix writing out carriage return on all terminals
Bluetooth: samples: Add dedicated Heartrate peripheral sample app
drivers/nble: Adjust max conn count to something more realistic
drivers/nble: Remove unnecessary bt_conn_add_le function
Bluetooth: Move address helper functions to hci.h
drivers/nble: Implement bt_conn_lookup_addr_le
drivers/nble: Clarify connection reference counting
drivers/nble: Implement bt_conn_get_info and bt_conn_get_dst
drivers/nble: Add initial implementation of connection callbacks
Bluetooth: samples/peripheral_hr: Add adv-restart hack for nble
drivers/nble: Pass correct handle in bt_gatt_notify
Bluetooth: samples/peripheral_hr: Pass explicit connection to bt_gatt_notify
Bluetooth: samples/peripheral_hr: Add "Zephyr" to device name
net: buf: Add convenience API for adding 8-bit integers
drivers/nble: Convert RPC serialization code to use net_buf
drivers/nble: Clean up & simplify IPC UART encoding
Bluetooth: Add connection role to bt_conn_info
Bluetooth: Add HCI defines for common 1-byte values
Bluetooth: Take advantage of the new net_buf_add_u8() helper
Bluetooth: samples: Move init and shell to tests
drivers/nble: Make UART reading more robust
Bluetooth: Kconfig: Introduce BLUETOOTH_RX_STACK_SIZE
net: buf: Add net_buf_pull_u8() helper API
drivers/nble: Convert RPC deserialization to use net_buf
drivers/nble: Add proper boundary checks for function tables
Bluetooth: Take advantage of the new net_buf_pull_u8() helper
drivers/nble: Take advantage of the new net_buf_pull_u8() helper
drivers/nble: Track all connection parameters
drivers/nble: Export local address for bt_conn_get_info()
drivers/nble: Kconfig: Add a note about ABI requirements
Bluetooth: samples/beacon: Advertize http://www.zephyrproject.org
Bluetooth: Rename att.h to att_internal.h
Bluetooth: Add public att.h header file
Bluetooth: ATT: Add Common Profile Error Codes
Bluetooth: GATT: Expose ATT error codes to application callbacks
Bluetooth: GATT: Provide documentation for the attribute callbacks
Bluetooth: Use BIT() macro wherever possible
Bluetooth: GATT: Fix error response to bt_gatt_attr_read()
drivers/nble: Fix GATT error response values
libc: Add definition for ssize_t
Bluetooth: Change GATT callback return values to ssize_t

Juan Manuel Cruz (10):
adc: adjustments to dummy read
adc: fixes unexpected error with interrupt handler
logger: removes old task monitor structures.
logger: removes TASK_MONITOR_CAPACITY symbol
logger: updates logger sample to include task monitor events
doc: adds the task monitor documentation
logger: include task monitor in kernel event logger
kconfig: adapt kconfig to work with mingw
build: changes order in which paths are added to $PATH
doc: installation instructions for windows

Jukka Rissanen (32):
net: Print thread pointer in debug prints
net: Initialize Contiki vars related to L2 buffer mgmt
cc2520: packetbuf attributes were set using wrong pointer
net: Increase the 802.15.4 TX stack to 4096 bytes
net: Allow user to tweak IP fibers stack sizes from Kconfig
net: Allow user to tweak 802.15.4 fibers stack sizes from Kconfig
cc2520: Move the device init to application level
net: apps: Remove obsolete listener application
net: apps: Make CoAP server to accept different bearer config
net: apps: Make sure CoAP server works with IPv6 ND
cc2520: Ignore received bogus packets silently
net: contiki: If outgoing packet is dropped then print more info
net: apps: Disable multicast sending in echo-client
net: apps: Resend failed message once in echo-client
cc2520: Busywait max 500ms before trying to send another packet
net: apps: Fix style issue
net: apps: Use IPv6 link local addresses in network apps
net: apps: Rename application init function
net: apps: Comment out code if IPv6 ND is in use
net: contiki: Enable packet queueing
net: apps: Make dtls server/client to accept different bearer config
net: apps: Fix the mac addresses in dtls client demo
net: Selecting Bluetooth IP networking selects BT support
net: contiki: Fix the description of 6lowpan files
net: contiki: Original copyright notice was missing
cc2520: Turn off auto ACK
net: Timer fiber now sleeps until next event
net: Print the stack usage in timer fiber less often
Revert "cc2520: Turn off auto ACK"
Revert "cc2520: Rework reception logic"
net: Use the existing logging option in Kconfig for debugging
net: License information was missing

Leona Cook (16):
doc: Migrating API edit on microkernel memory_map.h
doc: Edit API documentation on microkernel mutex.h
doc: Edit API documentation on microkernel ticks.h
doc: Edit API documentation on microkernel pipe.h
doc: Edit API documentation on microkernel task_irq.h
doc: Edit API documentation on microkernel memory_pool.h
doc: Edit API documentation on microkernel task.h
doc: Edit arduino_101.rst for spelling, grammar, consistency
doc: Cleanup prefix table on naming_conventions.rst
doc: Deleted from installation_linux.rst network/proxy config
doc: Edit microkernel_tasks.rst for grammar and clarity
doc: Edit common_kernel_clocks.rst
doc: Edited synchronous_call.rst for typos, ReST syntax
doc: ReST syntax added to memory_maps.rst to enhance readability
doc: Edit microkernel_memory_pools.rst for consistency in structure.
doc: Minor edits needed on microkernel_fibers.rst

Luiz Augusto von Dentz (26):
Bluetooth: peripheral: Register services after init
drivers/nble: Increase rx buffer count
drivers/nble: Sync ble_gatt_notif_ind_rsp definition
Bluetooth: peripheral: Fix using CCC handle with bt_gatt_notify
drivers/nble: Fix log order when receiving a write event
Bluetooth: peripheral: Make heart rate simulation more predictable
drivers/nble: Add BLUETOOTH_DEBUG_GATT to Kconfig
drivers/nble: Enable debug only if CONFIG_BLUETOOTH_DEBUG_GATT is defined
Bluetooth: IPSP: Add sample header
net: Select NETWORKING_IPV6_NO_ND in case of NETWORKING_WITH_BT
Bluetooth: L2CAP: Fix use of '/n' with BT_DBG
Bluetooth: IPSP: Correct filename and description
Bluetooth: L2CAP: Log an error if data cannot be sent
net: echo_server: Avoid using #ifdef and #ifndef
net: echo_server: Add support for Bluetooth
Bluetooth: L2CAP: Add proper documentation for callbacks
net: echo_client: Avoid using #ifdef and #ifndef
net: echo_client: Add support for Bluetooth
net: Kconfig: Auto select mandatory features for Bluetooth
net: coap_server: Avoid using #ifdef and #ifndef
net: coap_server: Add support for Bluetooth
net: coap_observe_client: Avoid using #ifdef and #ifndef
net: coap_observe_client: Add support for Bluetooth
net: dtls_server: Avoid using #ifdef and #ifndef
net: dtls_server: Add support for Bluetooth
net: Fix Bluetooth driver warning

Mariusz Skamra (16):
Bluetooth: Add Environmental Sensing Service related UUID defs
Bluetooth: Remove HR Control Point Characteristic from HR svc decl.
Bluetooth: Add Cycling Speed and Cadence Service related UUID defs
Bluetooth: Add Environmental Sensing Profile sample app
Bluetooth: Add Cycling Speed and Cadence sample application
Bluetooth: doc: Add L2CAP PICS file
Bluetooth: btp: Fix permission bits
Bluetooth: tester: Use common write without response command handler
Bluetooth: tester: Use BT_UUID defines for UUID comparisons
Bluetooth: tester: Fix initialization of static variables
Bluetooth: tester: Refactor gatt_buf_add and gatt_buf_reserve functions
Bluetooth: tester: Remove set_ccc_value helper
Bluetooth: SMP: Clear keys on SMP Timeout and Pairing Failed
Bluetooth: btp: Fix BTP GATT command opcodes
Bluetooth: tester: Fix supported commands to use uint8_t array
Bluetooth: tester: Fix missing bit in GAP supported commands

Michael LeMay (5):
doc: Note that Ethernet is supported for Galileo
docs: Note in Galileo docs that PCI enumeration is disabled
doc: Remove unneeded Ubuntu dependencies for GRUB
doc: Revise Intel Galileo board instructions
doc: Note spurious Intel Galileo boot messages

Pawel Wodnicki (1):
boards/basic_cortex_m3: Fix typo in Kconfig.board

Peter Mitsis (14):
minimal libc: stdlib.h no longer includes ctype.h
arm build: Select correct library version
bluetooth doc: Fix unsupported xml/html tag warnings
bluetooth doc: Fix typos in uuid documentation
arm: Enable support for sys_thread_busy_wait()
doc: Fix misuse of @file doxygen tag
doc: Fix doxygen build warnings in device.h
doc: Fix warning about unsupported xml/html tag
bluetooth doc: Fix parameter name in documentation
net doc: Fix parameter names in documentation
nanokernel: Change fiber_delayed_start() return type
nanokernel: Change fiber_start() return type
nanokernel: Add routines for waking a fiber
test: Add nanokernel test_sleep project

Ramesh Thomas (4):
adv_power:Fix build error when ADVANCED_IDLE flag is enabled
adv_power:Rename PM functions according to coding convention
adv_power:Advanced Power Management APIs
adv_power:Power management hooks template app

Ravi kumar Veeramally (4):
cc2520: Add Kconfig option for TI cc2520 channel
cc2520: Return DEV_FAIL on initialization failed case
cc2520: Fix debug prints format specifiers
cc2520: Fix resetting of CC2520_EXCFLAG0

Rodrigo Caballero (21):
doc: Edit the ADC driver APIs
doc: Edit the code-block ReST documentation.
doc: Include the I/O APIs in the documentation.
doc: Edit the SPI driver APIs
doc: Edit the GPIO driver APIs
doc: Edit the Pinmux driver APIs
doc: Edit the IPM driver APIs
doc: Edit the PWM driver APIs
doc: Edit the I2C driver APIs
doc: API edits for microkernel semaphore.h
doc: Fix broken link for USB to TTL cable on Arduino 101 doc.
doc: API doc edits for microkernel event.h
doc: Edit the Event Logger APIs
doc: Edit the UART driver APIs
doc: Fix minor grammar error on getting_started.rst
doc: Fix table to remove the invalid ARC information.
doc: Remove orphan file reference.rst.
doc: Remove orphaned kbuild_toolchains.rst
doc: Fix toctree in gerrit_accounts.rst
doc: Fix include in gerrit_accounts.rst
doc: Update and include nanokernel_example.rst

Sergio Rodriguez (1):
tickless idle x86: Tickless idle support on nanokernel for x86

Szymon Janc (26):
tinycrypt: Fix few typos in Kconfig help messages
tinycrypt: Fix compilation with ECC enabled
Bluetooth: GATT: Refactor subscription API
Bluetooth: GATT: Refactor read API
Bluetooth: Add support for TinyCrypt based bt_rand
Bluetooth: Kconfig: Add option for enabling TinyCrypt
Bluetooth: Remove CONFIG_TEST_RANDOM_GENERATOR from sample apps
Bluetooth: Store LE SC Public Key in SMP code
Bluetooth: Use correct CONFIG option for TinyCrypt ECC define
Bluetooth: SMP: Add support for TinyCrypt ECC
Bluetooth: Kconfig: Add TinyCrypt ECC config option
Bluetooth: Kconfig: Remove not needed help quotation marks
Bluetooth: SMP: Use TinyCrypt for AES CMAC
Bluetooth: Remove dead code
Bluetooth: Kconfig: Clarify BLUETOOTH_TINYCRYPT_ECC help message
Bluetooth: SMP: Fix compilation with SC Only mode enabled
Bluetooth: Kconfig: Move TinyCrypt ECDH under SMP
Bluetooth: Merge init_h5 into init test
tests: Simplify test_bluetooth configuration
tests: Fix Bluetooth tests and samples platform blacklisting
Bluetooth: ATT: Fix notifying GATT on disconnection
Bluetooth: GATT: Fix possible bt_conn leak
Bluetooth: Fix not calling connected callback on connect failed
Bluetooth: Fix tracking of advertising state
Bluetooth: SMP: Add support for no bond pairing
Bluetooth: GATT: Fix check if device is bonded

Tomasz Bursztyka (18):
cc2520: Reading incoming packet cannot be done under ISR context
cc2520: GPIO should trigger on edge and not level
cc2520: Reinstate the radio locking/unlocking logic
cc2520: Rework the logic of reading packets
spi: dw: If an error occurs, nothing should prevent to stop
spi: dw: Improve debug output
cc2520: Add debug prints in case of packet rejection
net: ip: Fix a build issue when CONFIG_NETWORKING_WITH_LOGGING=n
net: ip: Make sure CONFIG_NETWORKING_WITH_LOGGING is properly handled
boards: Add a board definition for Quark SE SSS development board
spi: dw: Quark SE Sensor Sub-System support
quark_se_ss: Add default SPI configuration values
net: ip: Enable Kconfig based debug options for the IP stack
cc2520: 7th bit of the packet length should not be interpreted
cc2520: Flushing RX FIFO is done through one SFLUSHRX instruction
cc2520: Remove useless gpio logic
cc2520: Let's use the maximum SPI clock supported
cc2520: Rework reception logic

Vinicius Costa Gomes (7):
samples: spi_test: Add support for using QMSI driver
samples: Add a sample SPI application for W25Q80BL
drivers: gpio: Add support for AON GPIO to QMSI driver
gpio: qmsi: Simplify interrupt enabling/disabling
gpio: qmsi: Fix overwriting name set by the driver's Kconfig
samples: w25q80bl: Fix wrong check for GPIO pin as CS
samples: w25q80bl: Add a README file

Yannis Damigos (4):
zephyr-env.sh: Fixed sourcing the project environment file from zsh
doc: Documentation generator failed for html format
zephyr-env.sh: Fixed sourcing the project environment file
doc: Fixed two warnings in html format documentation generation

.gitreview | 4 +
Makefile | 34 +-
arch/Kconfig | 2 +
arch/arc/Kconfig | 2 -
arch/arc/core/irq_manage.c | 8 +-
arch/arc/soc/quark_se_ss/Kconfig | 40 +
arch/arc/soc/quark_se_ss/soc.h | 10 +
arch/arm/core/irq_manage.c | 51 +-
arch/arm/soc/atmel_sam3/Kconfig | 10 +
arch/arm/soc/atmel_sam3/soc.h | 14 +
arch/arm/soc/atmel_sam3/soc_registers.h | 43 +
arch/x86/Kconfig | 14 +
arch/x86/core/Kconfig | 8 +
arch/x86/core/Makefile | 1 +
arch/x86/core/cpuhalt.c | 13 +
arch/x86/core/crt0.S | 114 +-
arch/x86/core/dynamic.c | 4 +-
arch/x86/core/excconnect.c | 4 +
arch/x86/core/excstub.S | 11 +-
arch/x86/core/i386_sysV_abi/intstub.S | 9 +
arch/x86/core/iamcu_abi/intstub.c | 16 +-
arch/x86/core/intconnect.c | 115 +-
arch/x86/core/reboot_rst_cnt.c | 43 +
arch/x86/include/advidle.h | 113 +-
arch/x86/include/idtEnt.h | 40 +-
arch/x86/soc/ia32/soc.h | 35 +-
arch/x86/soc/quark_d2000/Kconfig | 50 +-
arch/x86/soc/quark_se/Kconfig | 60 +-
arch/x86/soc/quark_se/soc.c | 8 +
arch/x86/soc/quark_x1000/soc.h | 6 +-
boards/arduino_101_sss/arduino_101_sss_defconfig | 1 +
boards/arduino_due/Kconfig | 17 +
boards/basic_cortex_m3/Kconfig.board | 2 +-
boards/galileo/Kconfig | 8 +-
boards/galileo/Makefile | 1 -
boards/galileo/galileo_reboot.c | 43 -
boards/quark_se_ctb/Kconfig | 8 -
boards/quark_se_ctb/Kconfig.board | 5 -
boards/quark_se_ctb/Makefile | 6 -
boards/quark_se_ctb/board.c | 21 -
boards/quark_se_ctb/board.h | 22 -
boards/quark_se_ctb/pinmux.c | 350 ----
boards/quark_se_ctb/quark_se_ctb_defconfig | 17 -
boards/quark_se_devboard/Kconfig | 25 +-
boards/quark_se_devboard/board.c | 6 +-
boards/quark_se_devboard/pinmux.c | 4 +
boards/quark_se_sss_ctb/Kconfig | 7 -
boards/quark_se_sss_ctb/Kconfig.board | 5 -
boards/quark_se_sss_ctb/Makefile | 5 -
boards/quark_se_sss_ctb/Makefile.board | 7 -
boards/quark_se_sss_ctb/board.c | 21 -
boards/quark_se_sss_ctb/board.h | 22 -
boards/quark_se_sss_ctb/quark_se_sss_ctb_defconfig | 16 -
boards/quark_se_sss_ctb/support/openocd.cfg | 13 -
boards/quark_se_sss_devboard/Kconfig | 7 +
boards/quark_se_sss_devboard/Kconfig.board | 5 +
boards/quark_se_sss_devboard/Makefile | 5 +
boards/quark_se_sss_devboard/Makefile.board | 6 +
boards/quark_se_sss_devboard/board.c | 21 +
boards/quark_se_sss_devboard/board.h | 22 +
.../quark_se_sss_devboard_defconfig | 16 +
boards/quark_se_sss_devboard/support/openocd.cfg | 13 +
doc/Makefile | 9 +-
doc/about_zephyr.rst | 4 +-
doc/api/api.rst | 2 +
doc/api/event_logger.rst | 16 +
doc/api/io_interfaces.rst | 65 +
doc/api/microkernel_api.rst | 7 +
doc/api/nanokernel_api.rst | 14 +
doc/application/apps_code_dev.rst | 2 +-
doc/application/apps_object_conf.rst | 4 +-
doc/bluetooth/l2cap-pics.txt | 121 ++
doc/board/arduino_101.rst | 363 ++--
doc/board/arduino_due.rst | 123 +-
doc/board/board.rst | 72 +-
doc/board/frdm_k64f.rst | 4 +-
doc/board/galileo.rst | 130 +-
doc/board/minnowboard.rst | 4 +-
doc/board/qemu_cortex_m3.rst | 4 +-
doc/board/qemu_x86.rst | 4 +-
doc/board/quark_d2000_crb.rst | 64 +
doc/collaboration/code/code.rst | 14 +-
doc/collaboration/code/doxygen/defines.rst | 8 +-
doc/collaboration/code/doxygen/functions.rst | 31 +-
doc/collaboration/code/doxygen/hello_wrong.c | 30 +
.../code/doxygen/irq_test_common_wrong.h | 5 +
doc/collaboration/code/doxygen/structs.rst | 23 +-
doc/collaboration/code/figures/setting_up01.png | Bin 0 -> 26418 bytes
doc/collaboration/code/figures/setting_up02.png | Bin 0 -> 23984 bytes
doc/collaboration/code/figures/setting_up03.png | Bin 0 -> 19736 bytes
doc/collaboration/code/figures/setting_up04.png | Bin 0 -> 12166 bytes
doc/collaboration/code/gerrit.rst | 88 +-
doc/collaboration/code/gerrit_accounts.rst | 134 ++
doc/collaboration/code/gerrit_practices.rst | 41 +-
doc/collaboration/code/licenses.rst | 60 -
doc/collaboration/code/naming_conventions.rst | 82 +-
doc/collaboration/documentation/basic.rst | 6 +-
doc/collaboration/documentation/code_blocks.rst | 17 +-
doc/collaboration/documentation/cross.rst | 16 +-
doc/collaboration/documentation/images.rst | 6 +-
doc/collaboration/documentation/inline.rst | 2 +-
doc/collaboration/documentation/language.rst | 4 +-
doc/collaboration/documentation/simple.rst | 10 +-
doc/collaboration/documentation/tables.rst | 2 +-
doc/conf.py | 8 +-
doc/crypto/crypto.rst | 9 +-
doc/crypto/tinycrypt.rst | 272 ++-
doc/doxygen.config | 9 +-
doc/getting_started/building_zephyr.rst | 6 +-
doc/getting_started/figures/setting_up01.png | Bin 26418 -> 0 bytes
doc/getting_started/figures/setting_up02.png | Bin 23984 -> 0 bytes
doc/getting_started/getting_started.rst | 2 +-
doc/getting_started/installation_linux.rst | 35 +-
doc/getting_started/installation_mac.rst | 10 +
doc/getting_started/installation_win.rst | 111 ++
doc/getting_started/setting_up.rst | 114 +-
doc/kernel/common/common_kernel_clocks.rst | 17 +-
doc/kernel/devices/synchronous_call.rst | 80 +-
doc/kernel/microkernel/microkernel_events.rst | 2 +-
doc/kernel/microkernel/microkernel_fibers.rst | 32 +-
doc/kernel/microkernel/microkernel_memory_maps.rst | 65 +-
.../microkernel/microkernel_memory_pools.rst | 123 +-
doc/kernel/microkernel/microkernel_mutexes.rst | 2 +-
doc/kernel/microkernel/microkernel_semaphores.rst | 2 +-
doc/kernel/microkernel/microkernel_tasks.rst | 133 +-
doc/kernel/nanokernel/nanokernel.rst | 1 +
doc/kernel/nanokernel/nanokernel_example.rst | 6 +-
doc/kernel/nanokernel/nanokernel_fibers.rst | 8 +-
.../nanokernel/nanokernel_kernel_event_logger.rst | 101 +-
doc/kernel/nanokernel/nanokernel_ring_buffers.rst | 10 +-
doc/kernel/overview/kernel_fundamentals.rst | 34 +
doc/kernel/overview/source_tree.rst | 7 +-
doc/reference/kbuild/kbuild_toolchains.rst | 2 -
doc/reference/reference.rst | 12 -
doc/scripts/genrest/genrest.py | 20 +-
doc/scripts/genrest/kconfiglib.py | 16 +-
drivers/802.15.4/Kconfig | 16 +
drivers/802.15.4/cc2520.c | 302 ++-
drivers/802.15.4/cc2520_arch.h | 13 +-
drivers/adc/Kconfig | 59 +-
drivers/adc/adc_dw.c | 106 +-
drivers/adc/adc_dw.h | 11 +-
drivers/adc/adc_ti_adc108s102.c | 20 +-
drivers/adc/adc_ti_adc108s102.h | 6 +-
drivers/bluetooth/h4.c | 3 +-
drivers/bluetooth/h5.c | 10 +-
drivers/console/uart_console.c | 1 +
drivers/gpio/Kconfig | 48 +-
drivers/gpio/gpio_pcal9535a.h | 4 +
drivers/gpio/gpio_qmsi.c | 144 +-
drivers/gpio/gpio_sch.h | 4 +-
drivers/i2c/Kconfig | 14 +-
drivers/i2c/Kconfig.atmel_sam3 | 89 +
drivers/i2c/Makefile | 1 +
drivers/i2c/i2c_atmel_sam3.c | 617 ++++++
drivers/i2c/i2c_atmel_sam3.h | 127 ++
drivers/i2c/i2c_dw.h | 10 +-
drivers/i2c/i2c_dw_registers.h | 2 +-
drivers/i2c/i2c_qmsi.c | 4 +
drivers/interrupt_controller/system_apic.c | 2 +-
drivers/nble/Kconfig | 54 +
drivers/nble/conn.c | 297 ++-
drivers/nble/conn.h | 17 +
drivers/nble/conn_internal.h | 36 +
drivers/nble/gap.c | 244 +--
drivers/nble/gap_internal.h | 422 ++--
drivers/nble/gatt.c | 203 +-
drivers/nble/gatt_internal.h | 221 +--
drivers/nble/rpc.h | 10 +-
drivers/nble/rpc_deserialize.c | 266 ++-
drivers/nble/rpc_functions_to_ble_core.h | 118 +-
drivers/nble/rpc_functions_to_quark.h | 156 +-
drivers/nble/rpc_serialize.c | 227 +--
drivers/nble/uart.c | 149 +-
drivers/nble/uart.h | 31 -
drivers/nble/version.h | 12 -
drivers/pci/pci.c | 16 +-
drivers/pwm/pwm_pca9685.h | 1 +
drivers/rtc/Kconfig | 3 -
drivers/serial/uart_ns16550.c | 1 +
drivers/spi/Kconfig | 114 +-
drivers/spi/spi_dw.c | 286 +--
drivers/spi/spi_dw.h | 177 +-
drivers/spi/spi_dw_quark_se_ss_regs.h | 144 ++
drivers/spi/spi_dw_regs.h | 100 +
drivers/spi/spi_intel.h | 1 +
drivers/spi/spi_qmsi.c | 4 +
drivers/timer/hpet.c | 32 +-
drivers/timer/loapic_timer.c | 51 +-
drivers/watchdog/Kconfig | 5 -
include/adc.h | 71 +-
include/arch/arc/arch.h | 3 +-
include/arch/arc/v2/irq.h | 17 +-
include/arch/arm/cortex_m/asm_inline_gcc.h | 5 +-
include/arch/arm/cortex_m/irq.h | 33 +-
include/arch/x86/arch.h | 28 +-
include/bluetooth/att.h | 55 +
include/bluetooth/bluetooth.h | 2 +-
include/bluetooth/conn.h | 10 +
include/bluetooth/gatt.h | 184 +-
include/bluetooth/hci.h | 79 +
include/bluetooth/l2cap.h | 45 +-
include/bluetooth/uuid.h | 175 +-
include/device.h | 112 +-
include/drivers/serial/uart_nsim.h | 3 +-
include/drivers/system_timer.h | 5 +-
include/gpio.h | 164 +-
include/i2c.h | 144 +-
include/ipm.h | 106 +-
include/irq.h | 126 ++
include/irq_offload.h | 3 +-
include/microkernel/event.h | 51 +-
include/microkernel/fifo.h | 54 +-
include/microkernel/mailbox.h | 98 +-
include/microkernel/memory_map.h | 23 +-
include/microkernel/memory_pool.h | 23 +-
include/microkernel/mutex.h | 27 +-
include/microkernel/pipe.h | 72 +-
include/microkernel/semaphore.h | 61 +-
include/microkernel/task.h | 60 +-
include/microkernel/task_irq.h | 41 +-
include/microkernel/ticks.h | 43 +-
include/misc/__assert.h | 2 +-
include/misc/event_logger.h | 100 +-
include/misc/kernel_event_logger.h | 6 +
include/misc/ring_buffer.h | 11 +
include/nanokernel.h | 889 +++++----
include/net/buf.h | 23 +
include/net/ip_buf.h | 7 +-
include/net/net_core.h | 14 +-
include/net/net_socket.h | 2 +-
include/pinmux.h | 8 +-
include/pwm.h | 75 +-
include/spi.h | 102 +-
include/uart.h | 230 ++-
kernel/Kconfig | 12 -
kernel/microkernel/Kconfig | 11 +-
kernel/microkernel/include/micro_private_types.h | 17 -
kernel/microkernel/k_idle.c | 37 +-
kernel/microkernel/k_task_monitor.c | 73 +-
kernel/microkernel/k_ticker.c | 21 +
kernel/nanokernel/compiler_stack_protect.c | 7 -
kernel/nanokernel/device.c | 16 +
kernel/nanokernel/include/timeout_q.h | 13 +-
kernel/nanokernel/include/wait_q.h | 2 +
kernel/nanokernel/nano_context.c | 17 +-
kernel/nanokernel/nano_fiber.c | 28 +-
kernel/nanokernel/nano_fifo.c | 30 +-
kernel/nanokernel/nano_init.c | 17 +-
kernel/nanokernel/nano_lifo.c | 9 +-
kernel/nanokernel/nano_sema.c | 9 +-
kernel/nanokernel/nano_sleep.c | 39 +
kernel/nanokernel/nano_stack.c | 23 +-
kernel/nanokernel/nano_sys_clock.c | 12 +-
kernel/nanokernel/nano_timer.c | 9 +-
lib/crypto/tinycrypt/Kconfig | 6 +-
lib/crypto/tinycrypt/Makefile | 4 +-
lib/libc/minimal/include/bits/null.h | 3 +-
lib/libc/minimal/include/bits/restrict.h | 3 +-
lib/libc/minimal/include/bits/size_t.h | 3 +-
lib/libc/minimal/include/bits/ssize_t.h | 35 +
lib/libc/minimal/include/stdlib.h | 1 -
lib/libc/minimal/include/sys/types.h | 22 +
lib/libc/newlib/libc-hooks.c | 25 +-
misc/Kconfig | 1 +
net/bluetooth/Kconfig | 29 +
net/bluetooth/att.c | 17 +-
net/bluetooth/att.h | 277 ---
net/bluetooth/att_internal.h | 258 +++
net/bluetooth/conn.c | 22 +-
net/bluetooth/conn_internal.h | 7 +-
net/bluetooth/gatt.c | 302 +--
net/bluetooth/hci_core.c | 791 +++++---
net/bluetooth/hci_core.h | 27 +-
net/bluetooth/keys.h | 19 +-
net/bluetooth/l2cap.c | 13 +-
net/bluetooth/smp.c | 558 +++---
net/bluetooth/smp.h | 2 +-
net/buf.c | 22 +
net/ip/Kconfig | 67 +-
net/ip/Kconfig.debug | 104 +
net/ip/contiki/contiki-conf.h | 21 +
net/ip/contiki/ip/tcpip.c | 45 +-
net/ip/contiki/ip/uip-debug.h | 20 +-
net/ip/contiki/ip/uip-packetqueue.c | 9 +-
net/ip/contiki/ipv4/uip.c | 4 +-
net/ip/contiki/ipv4/uip_arp.c | 9 +-
net/ip/contiki/ipv6/uip-ds6-nbr.c | 4 +-
net/ip/contiki/ipv6/uip-ds6-route.c | 5 +-
net/ip/contiki/ipv6/uip-ds6.c | 4 +-
net/ip/contiki/ipv6/uip-icmp6.c | 4 +-
net/ip/contiki/ipv6/uip-nd6.c | 8 +-
net/ip/contiki/ipv6/uip6.c | 4 +-
net/ip/contiki/os/rtimer-arch.h | 16 +
net/ip/contiki/os/sys/clock.h | 2 +-
net/ip/contiki/os/sys/etimer.c | 4 +
net/ip/contiki/os/sys/timer.h | 2 +-
net/ip/contiki/sicslowpan/null_compression.c | 2 +-
net/ip/contiki/sicslowpan/null_fragmentation.c | 2 +-
net/ip/contiki/sicslowpan/null_fragmentation.h | 2 +-
net/ip/contiki/sicslowpan/sicslowpan_compression.c | 47 +-
net/ip/contiki/sicslowpan/sicslowpan_compression.h | 47 +-
.../contiki/sicslowpan/sicslowpan_fragmentation.c | 47 +-
.../contiki/sicslowpan/sicslowpan_fragmentation.h | 2 +-
net/ip/ip_buf.c | 5 +
net/ip/l2_buf.c | 9 +-
net/ip/net_core.c | 69 +-
net/ip/net_driver_15_4.c | 21 +-
net/ip/net_driver_bt.c | 2 +
net/ip/tinydtls/platform-specific/config-zephyr.h | 16 +
net/ip/tinydtls/platform-specific/platform.h | 16 +
samples/bluetooth/beacon/Makefile | 2 +-
samples/bluetooth/beacon/prj.conf | 1 -
samples/bluetooth/beacon/prj_nble.conf | 1 +
samples/bluetooth/beacon/src/main.c | 16 +-
samples/bluetooth/beacon/testcase.ini | 2 +-
samples/bluetooth/central/testcase.ini | 3 +-
samples/bluetooth/central_hr/prj.conf | 1 -
samples/bluetooth/central_hr/src/main.c | 17 +-
samples/bluetooth/init/Makefile | 7 -
samples/bluetooth/init/prj.conf | 4 -
samples/bluetooth/init/prj.mdef | 5 -
samples/bluetooth/init/src/Makefile | 1 -
samples/bluetooth/init/src/main.c | 40 -
samples/bluetooth/init/testcase.ini | 7 -
samples/bluetooth/init_h5/Makefile | 7 -
samples/bluetooth/init_h5/prj.conf | 5 -
samples/bluetooth/init_h5/prj.mdef | 5 -
samples/bluetooth/init_h5/src/Makefile | 1 -
samples/bluetooth/init_h5/src/main.c | 40 -
samples/bluetooth/init_h5/testcase.ini | 6 -
samples/bluetooth/ipsp/prj.conf | 12 -
samples/bluetooth/ipsp/src/Makefile | 2 +-
samples/bluetooth/ipsp/src/ipss.c | 260 +++
samples/bluetooth/ipsp/src/ipss.h | 21 +
samples/bluetooth/ipsp/src/main.c | 229 +--
samples/bluetooth/ipsp/testcase.ini | 1 +
samples/bluetooth/peripheral/prj.conf | 3 -
samples/bluetooth/peripheral/prj_nble.conf | 2 +-
samples/bluetooth/peripheral/src/main.c | 102 +-
samples/bluetooth/peripheral/testcase.ini | 1 +
samples/bluetooth/peripheral_csc/Makefile | 7 +
samples/bluetooth/peripheral_csc/prj.conf | 4 +
samples/bluetooth/peripheral_csc/prj.mdef | 5 +
samples/bluetooth/peripheral_csc/src/Makefile | 1 +
samples/bluetooth/peripheral_csc/src/main.c | 536 +++++
samples/bluetooth/peripheral_csc/testcase.ini | 12 +
samples/bluetooth/peripheral_dis/src/main.c | 11 +-
samples/bluetooth/peripheral_dis/testcase.ini | 1 +
samples/bluetooth/peripheral_esp/Makefile | 7 +
samples/bluetooth/peripheral_esp/prj.conf | 7 +
samples/bluetooth/peripheral_esp/prj.mdef | 5 +
samples/bluetooth/peripheral_esp/src/Makefile | 1 +
samples/bluetooth/peripheral_esp/src/main.c | 624 ++++++
samples/bluetooth/peripheral_esp/testcase.ini | 12 +
samples/bluetooth/peripheral_hr/Makefile | 7 +
samples/bluetooth/peripheral_hr/README | 4 +
samples/bluetooth/peripheral_hr/prj.conf | 6 +
samples/bluetooth/peripheral_hr/prj.mdef | 5 +
samples/bluetooth/peripheral_hr/prj_nble.conf | 4 +
samples/bluetooth/peripheral_hr/src/Makefile | 1 +
samples/bluetooth/peripheral_hr/src/main.c | 287 +++
samples/bluetooth/peripheral_hr/testcase.ini | 20 +
samples/bluetooth/peripheral_sc_only/Makefile | 2 +-
samples/bluetooth/peripheral_sc_only/src/main.c | 11 +-
samples/bluetooth/peripheral_sc_only/testcase.ini | 1 +
samples/bluetooth/shell/Makefile | 30 -
samples/bluetooth/shell/README | 7 -
samples/bluetooth/shell/prj.mdef | 5 -
samples/bluetooth/shell/prj_arm.conf | 14 -
samples/bluetooth/shell/prj_nble.conf | 7 -
samples/bluetooth/shell/prj_x86.conf | 16 -
samples/bluetooth/shell/src/Makefile | 3 -
samples/bluetooth/shell/src/main.c | 1541 ---------------
samples/bluetooth/shell/testcase.ini | 18 -
samples/bluetooth/test_bluetooth/Makefile | 3 -
samples/bluetooth/test_bluetooth/bluetooth.c | 73 -
samples/bluetooth/tester/Makefile | 37 -
samples/bluetooth/tester/README | 2 -
samples/bluetooth/tester/btp_spec.txt | 1071 ----------
samples/bluetooth/tester/prj.conf | 21 -
samples/bluetooth/tester/prj.mdef | 5 -
samples/bluetooth/tester/prj_nble.conf | 5 -
samples/bluetooth/tester/src/Makefile | 3 -
samples/bluetooth/tester/src/bttester.c | 229 ---
samples/bluetooth/tester/src/bttester.h | 529 -----
samples/bluetooth/tester/src/gap.c | 558 ------
samples/bluetooth/tester/src/gatt.c | 1771 -----------------
samples/bluetooth/tester/src/main.c | 32 -
samples/bluetooth/tester/testcase.ini | 12 -
.../build_test/drivers/dw_aio_comparator/Makefile | 6 -
.../drivers/dw_aio_comparator/README.txt | 13 -
.../build_test/drivers/dw_aio_comparator/prj.conf | 3 -
.../drivers/dw_aio_comparator/testcase.ini | 6 -
.../build_test/drivers/i2c_quark_se_ss/Makefile | 6 -
.../build_test/drivers/i2c_quark_se_ss/prj.conf | 4 -
.../drivers/i2c_quark_se_ss/testcase.ini | 6 -
samples/cpp_synchronization/microkernel/Makefile | 6 +
samples/cpp_synchronization/microkernel/README.txt | 52 +
samples/cpp_synchronization/microkernel/prj.mdef | 11 +
.../cpp_synchronization/microkernel/prj_arm.conf | 2 +
.../cpp_synchronization/microkernel/prj_x86.conf | 4 +
.../cpp_synchronization/microkernel/src/Makefile | 1 +
.../cpp_synchronization/microkernel/src/main.cpp | 299 +++
.../cpp_synchronization/microkernel/testcase.ini | 4 +
samples/cpp_synchronization/nanokernel/Makefile | 7 +
samples/cpp_synchronization/nanokernel/README.txt | 51 +
samples/cpp_synchronization/nanokernel/prj.conf | 2 +
.../cpp_synchronization/nanokernel/testcase.ini | 4 +
samples/crypto/test_aes/Makefile | 2 -
samples/crypto/test_aes/test_aes.c | 2075 --------------------
samples/crypto/test_cbc/Makefile | 2 -
samples/crypto/test_cbc/test_cbc_mode.c | 177 --
samples/crypto/test_ccm_mode/Makefile | 2 -
samples/crypto/test_ccm_mode/test_ccm_mode.c | 509 -----
samples/crypto/test_cmac_mode/Makefile | 2 -
samples/crypto/test_cmac_mode/test_cmac_mode.c | 309 ---
samples/crypto/test_ctr/Makefile | 2 -
samples/crypto/test_ctr/test_ctr_mode.c | 141 --
samples/crypto/test_hmac/Makefile | 2 -
samples/crypto/test_hmac/test_hmac.c | 358 ----
samples/crypto/test_prng/Makefile | 3 -
samples/crypto/test_prng/test_hmac_prng.c | 113 --
samples/crypto/test_sha256/Makefile | 3 -
samples/crypto/test_sha256/test_sha256.c | 510 -----
samples/drivers/adc/Makefile | 5 +
samples/drivers/adc/prj_arc.conf | 3 +
samples/drivers/adc/prj_x86.conf | 2 +
samples/drivers/adc/src/Makefile | 3 +
samples/drivers/adc/src/adc.c | 104 +
samples/drivers/adc/testcase.ini | 6 +
samples/drivers/aio_dw_comparator/Makefile | 5 +
samples/drivers/aio_dw_comparator/prj.conf | 4 +
samples/drivers/aio_dw_comparator/src/Makefile | 1 +
samples/drivers/aio_dw_comparator/src/main.c | 118 ++
samples/drivers/aio_dw_comparator/testcase.ini | 6 +
samples/drivers/current_sensing/Makefile | 5 +
samples/drivers/current_sensing/README | 8 +
samples/drivers/current_sensing/prj.conf | 4 +
samples/drivers/current_sensing/src/Makefile | 1 +
samples/drivers/current_sensing/src/main.c | 138 ++
samples/drivers/current_sensing/testcase.ini | 6 +
samples/drivers/gpio/Makefile | 14 +
samples/drivers/gpio/prj_arc.conf | 9 +
samples/drivers/gpio/prj_arm.conf | 6 +
samples/drivers/gpio/prj_x86.conf | 5 +
samples/drivers/gpio/src/Makefile | 1 +
samples/drivers/gpio/src/main.c | 216 ++
samples/drivers/gpio/testcase.ini | 5 +
samples/drivers/grove_lcd/Makefile | 5 +
samples/drivers/grove_lcd/README | 11 +
samples/drivers/grove_lcd/prj.conf | 9 +
samples/drivers/grove_lcd/src/Makefile | 1 +
samples/drivers/grove_lcd/src/grove_lcd.c | 141 ++
samples/drivers/grove_lcd/testcase.ini | 6 +
samples/drivers/i2c_fujitsu_fram/Makefile | 5 +
samples/drivers/i2c_fujitsu_fram/README | 6 +
samples/drivers/i2c_fujitsu_fram/prj.conf | 4 +
samples/drivers/i2c_fujitsu_fram/src/Makefile | 1 +
samples/drivers/i2c_fujitsu_fram/src/main.c | 163 ++
samples/drivers/i2c_fujitsu_fram/testcase.ini | 6 +
samples/drivers/i2c_lsm9ds0/Makefile | 6 +
samples/drivers/i2c_lsm9ds0/README | 26 +
samples/drivers/i2c_lsm9ds0/prj.conf | 3 +
samples/drivers/i2c_lsm9ds0/src/Makefile | 1 +
samples/drivers/i2c_lsm9ds0/src/main.c | 99 +
samples/drivers/led_apa102c/Makefile | 6 +
samples/drivers/led_apa102c/prj_x86.conf | 7 +
samples/drivers/led_apa102c/src/Makefile | 1 +
samples/drivers/led_apa102c/src/main.c | 139 ++
samples/drivers/led_apa102c/testcase.ini | 6 +
samples/drivers/pci_enum/Makefile | 6 +
samples/drivers/pci_enum/prj.conf | 3 +
samples/drivers/pci_enum/prj.mdef | 5 +
samples/drivers/pci_enum/src/Makefile | 3 +
samples/drivers/pci_enum/src/pci_enum.c | 73 +
samples/drivers/pci_enum/testcase.ini | 16 +
samples/drivers/pwm_dw/Makefile | 6 +
samples/drivers/pwm_dw/prj_x86.conf | 6 +
samples/drivers/pwm_dw/src/Makefile | 1 +
samples/drivers/pwm_dw/src/main.c | 103 +
samples/drivers/pwm_dw/testcase.ini | 6 +
samples/drivers/rtc/Makefile | 5 +
samples/drivers/rtc/rtc.config | 3 +
samples/drivers/rtc/src/Makefile | 1 +
samples/drivers/rtc/src/main.c | 53 +
samples/drivers/rtc/testcase.ini | 4 +
samples/drivers/spi_flash/Makefile | 6 +
samples/drivers/spi_flash/README.txt | 35 +
samples/drivers/spi_flash/prj.conf | 7 +
samples/drivers/spi_flash/prj.mdef | 5 +
samples/drivers/spi_flash/src/Makefile | 1 +
samples/drivers/spi_flash/src/main.c | 75 +
samples/drivers/spi_lsm9ds0/Makefile | 5 +
samples/drivers/spi_lsm9ds0/README | 21 +
samples/drivers/spi_lsm9ds0/prj.conf | 1 +
samples/drivers/spi_lsm9ds0/src/Makefile | 1 +
samples/drivers/spi_lsm9ds0/src/main.c | 75 +
samples/drivers/spi_test/Makefile | 5 +
samples/drivers/spi_test/prj_x86.conf | 1 +
samples/drivers/spi_test/src/Makefile | 3 +
samples/drivers/spi_test/src/spi.c | 99 +
samples/drivers/spi_test/testcase.ini | 5 +
samples/drivers/w25q80bl/Makefile | 5 +
samples/drivers/w25q80bl/README | 9 +
samples/drivers/w25q80bl/prj.conf | 1 +
samples/drivers/w25q80bl/src/Makefile | 1 +
samples/drivers/w25q80bl/src/main.c | 91 +
samples/drivers/watchdog/Makefile | 5 +
samples/drivers/watchdog/src/Makefile | 1 +
samples/drivers/watchdog/src/main.c | 58 +
samples/drivers/watchdog/testcase.ini | 4 +
samples/drivers/watchdog/watchdog.config | 1 +
samples/hello_world/microkernel/Makefile | 6 +
samples/hello_world/microkernel/README.txt | 33 +
samples/hello_world/microkernel/prj.conf | 2 +
samples/hello_world/microkernel/prj.mdef | 5 +
samples/hello_world/microkernel/src/Makefile | 1 +
samples/hello_world/microkernel/src/main.c | 30 +
samples/hello_world/nanokernel/Makefile | 5 +
samples/hello_world/nanokernel/README.txt | 32 +
samples/hello_world/nanokernel/prj.conf | 1 +
samples/hello_world/nanokernel/src/Makefile | 1 +
samples/hello_world/nanokernel/src/main.c | 39 +
samples/include/tc_nano_timeout_common.h | 68 -
samples/include/tc_util.h | 70 -
samples/include/test_utils.h | 76 -
samples/include/util_test_common.h | 30 -
samples/kernel_event_logger/microkernel/Makefile | 7 +
samples/kernel_event_logger/microkernel/README.txt | 64 +
samples/kernel_event_logger/microkernel/prj.mdef | 26 +
.../kernel_event_logger/microkernel/prj_arm.conf | 12 +
.../kernel_event_logger/microkernel/prj_x86.conf | 12 +
.../kernel_event_logger/microkernel/src/Makefile | 3 +
.../src/kernel_event_collector_sample.c | 518 +++++
.../kernel_event_logger/microkernel/testcase.ini | 4 +
samples/kernel_event_logger/nanokernel/Makefile | 6 +
samples/kernel_event_logger/nanokernel/README.txt | 58 +
.../kernel_event_logger/nanokernel/prj_arm.conf | 10 +
.../kernel_event_logger/nanokernel/prj_x86.conf | 10 +
.../kernel_event_logger/nanokernel/testcase.ini | 5 +
.../microkernel/apps/cpp_synchronization/Makefile | 6 -
.../apps/cpp_synchronization/README.txt | 52 -
.../microkernel/apps/cpp_synchronization/prj.mdef | 11 -
.../apps/cpp_synchronization/prj_arm.conf | 2 -
.../apps/cpp_synchronization/prj_x86.conf | 4 -
.../apps/cpp_synchronization/src/Makefile | 4 -
.../apps/cpp_synchronization/src/main.cpp | 299 ---
.../apps/cpp_synchronization/testcase.ini | 4 -
samples/microkernel/apps/hello_world/Makefile | 6 -
samples/microkernel/apps/hello_world/README.txt | 33 -
samples/microkernel/apps/hello_world/prj.conf | 2 -
samples/microkernel/apps/hello_world/prj.mdef | 5 -
samples/microkernel/apps/hello_world/src/Makefile | 1 -
samples/microkernel/apps/hello_world/src/main.c | 30 -
.../microkernel/apps/kernel_event_logger/Makefile | 7 -
.../apps/kernel_event_logger/README.txt | 64 -
.../microkernel/apps/kernel_event_logger/prj.mdef | 26 -
.../apps/kernel_event_logger/prj_arm.conf | 11 -
.../apps/kernel_event_logger/prj_x86.conf | 11 -
.../apps/kernel_event_logger/src/Makefile | 3 -
.../src/kernel_event_collector_sample.c | 430 ----
.../apps/kernel_event_logger/testcase.ini | 4 -
.../apps/net/coap_observe_client/Makefile | 27 -
.../apps/net/coap_observe_client/prj.mdef | 5 -
.../apps/net/coap_observe_client/prj_arm.conf | 11 -
.../apps/net/coap_observe_client/prj_x86.conf | 11 -
samples/microkernel/apps/net/coap_server/Makefile | 27 -
samples/microkernel/apps/net/coap_server/prj.mdef | 5 -
.../microkernel/apps/net/coap_server/prj_arm.conf | 10 -
.../microkernel/apps/net/coap_server/prj_x86.conf | 10 -
samples/microkernel/apps/net/dtls_client/Makefile | 27 -
samples/microkernel/apps/net/dtls_client/prj.mdef | 5 -
.../microkernel/apps/net/dtls_client/prj_arm.conf | 11 -
.../microkernel/apps/net/dtls_client/prj_x86.conf | 10 -
samples/microkernel/apps/net/dtls_server/Makefile | 27 -
samples/microkernel/apps/net/dtls_server/prj.mdef | 5 -
.../microkernel/apps/net/dtls_server/prj_arm.conf | 10 -
.../microkernel/apps/net/dtls_server/prj_x86.conf | 9 -
samples/microkernel/apps/net/echo_client/Makefile | 27 -
samples/microkernel/apps/net/echo_client/prj.mdef | 5 -
.../apps/net/echo_client/prj_802154.conf | 10 -
.../microkernel/apps/net/echo_client/prj_arm.conf | 8 -
.../microkernel/apps/net/echo_client/prj_slip.conf | 8 -
samples/microkernel/apps/net/echo_server/Makefile | 27 -
samples/microkernel/apps/net/echo_server/prj.mdef | 5 -
.../apps/net/echo_server/prj_802154.conf | 11 -
.../apps/net/echo_server/prj_ethernet.conf | 9 -
.../microkernel/apps/net/echo_server/prj_slip.conf | 8 -
samples/microkernel/apps/net/listener/Makefile | 26 -
samples/microkernel/apps/net/listener/prj.mdef | 11 -
samples/microkernel/apps/net/listener/prj_arm.conf | 5 -
samples/microkernel/apps/net/listener/prj_x86.conf | 5 -
.../microkernel/apps/net/test/test_15_4/Makefile | 26 -
samples/microkernel/apps/net/test/test_15_4/README | 84 -
.../microkernel/apps/net/test/test_15_4/prj.mdef | 11 -
.../apps/net/test/test_15_4/prj_arm.conf | 6 -
.../apps/net/test/test_15_4/prj_x86.conf | 8 -
samples/microkernel/apps/net/test_15_4/Makefile | 26 -
samples/microkernel/apps/net/test_15_4/prj.mdef | 11 -
.../microkernel/apps/net/test_15_4/prj_arm.conf | 6 -
.../microkernel/apps/net/test_15_4/prj_x86.conf | 7 -
samples/microkernel/apps/nfc_hello/Makefile | 8 -
samples/microkernel/apps/nfc_hello/README.txt | 2 -
samples/microkernel/apps/nfc_hello/prj.conf | 3 -
samples/microkernel/apps/nfc_hello/src/Makefile | 3 -
samples/microkernel/apps/nfc_hello/src/main.c | 97 -
samples/microkernel/apps/nfc_hello/testcase.ini | 7 -
samples/microkernel/apps/pci_enum/Makefile | 6 -
samples/microkernel/apps/pci_enum/prj.mdef | 5 -
samples/microkernel/apps/pci_enum/prj_x86.conf | 3 -
samples/microkernel/apps/pci_enum/src/Makefile | 3 -
samples/microkernel/apps/pci_enum/src/pci_enum.c | 73 -
samples/microkernel/apps/pci_enum/testcase.ini | 6 -
samples/microkernel/apps/philosophers/Makefile | 6 -
samples/microkernel/apps/philosophers/README.txt | 62 -
samples/microkernel/apps/philosophers/prj.mdef | 24 -
samples/microkernel/apps/philosophers/prj_arm.conf | 2 -
samples/microkernel/apps/philosophers/prj_x86.conf | 3 -
samples/microkernel/apps/philosophers/src/Makefile | 1 -
samples/microkernel/apps/philosophers/src/phil.h | 33 -
.../microkernel/apps/philosophers/src/phil_fiber.c | 127 --
.../microkernel/apps/philosophers/src/phil_task.c | 94 -
samples/microkernel/apps/philosophers/testcase.ini | 4 -
samples/microkernel/apps/synchronization/Makefile | 6 -
.../microkernel/apps/synchronization/README.txt | 48 -
samples/microkernel/apps/synchronization/prj.conf | 2 -
samples/microkernel/apps/synchronization/prj.mdef | 11 -
.../microkernel/apps/synchronization/src/Makefile | 1 -
.../microkernel/apps/synchronization/src/main.c | 76 -
.../microkernel/apps/synchronization/testcase.ini | 4 -
samples/microkernel/benchmark/app_kernel/Makefile | 12 -
.../microkernel/benchmark/app_kernel/README.txt | 148 --
samples/microkernel/benchmark/app_kernel/prj.mdef | 49 -
.../microkernel/benchmark/app_kernel/prj_atom.conf | 13 -
.../benchmark/app_kernel/prj_minuteia.conf | 6 -
.../microkernel/benchmark/app_kernel/src/Makefile | 7 -
.../microkernel/benchmark/app_kernel/src/config.h | 52 -
.../microkernel/benchmark/app_kernel/src/event_b.c | 176 --
.../microkernel/benchmark/app_kernel/src/fifo_b.c | 99 -
.../microkernel/benchmark/app_kernel/src/fifo_r.c | 44 -
.../benchmark/app_kernel/src/mailbox_b.c | 159 --
.../benchmark/app_kernel/src/mailbox_r.c | 105 -
.../microkernel/benchmark/app_kernel/src/master.c | 153 --
.../microkernel/benchmark/app_kernel/src/master.h | 166 --
.../microkernel/benchmark/app_kernel/src/memcfg.h | 25 -
.../benchmark/app_kernel/src/memmap_b.c | 50 -
.../benchmark/app_kernel/src/mempool_b.c | 49 -
.../microkernel/benchmark/app_kernel/src/mutex_b.c | 47 -
.../microkernel/benchmark/app_kernel/src/nop_b.c | 49 -
.../microkernel/benchmark/app_kernel/src/pipe_b.c | 251 ---
.../microkernel/benchmark/app_kernel/src/pipe_r.c | 150 --
.../benchmark/app_kernel/src/receiver.c | 62 -
.../benchmark/app_kernel/src/receiver.h | 36 -
.../microkernel/benchmark/app_kernel/src/sema_b.c | 131 --
.../microkernel/benchmark/app_kernel/src/sema_r.c | 75 -
.../microkernel/benchmark/app_kernel/testcase.ini | 6 -
samples/microkernel/benchmark/boot_time/Makefile | 14 -
samples/microkernel/benchmark/boot_time/README.txt | 68 -
.../microkernel/benchmark/boot_time/ia32/prj.conf | 6 -
.../benchmark/boot_time/ia32/prj_expert_test.conf | 7 -
.../benchmark/boot_time/ia32_pci/prj.conf | 4 -
samples/microkernel/benchmark/boot_time/prj.mdef | 5 -
.../boot_time/quark_d2000/quark_d2000_prj.conf | 7 -
.../benchmark/boot_time/quark_se/quark_se_prj.conf | 7 -
.../microkernel/benchmark/boot_time/src/Makefile | 4 -
.../benchmark/boot_time/src/boot_time.c | 121 --
.../microkernel/benchmark/boot_time/testcase.ini | 4 -
samples/microkernel/benchmark/footprint/Makefile | 21 -
samples/microkernel/benchmark/footprint/README.txt | 107 -
.../microkernel/benchmark/footprint/float/arm.conf | 15 -
.../microkernel/benchmark/footprint/float/x86.conf | 19 -
.../microkernel/benchmark/footprint/max/arm.conf | 12 -
.../microkernel/benchmark/footprint/max/x86.conf | 13 -
.../benchmark/footprint/micro_float.mdef | 37 -
.../microkernel/benchmark/footprint/micro_max.mdef | 37 -
.../microkernel/benchmark/footprint/micro_min.mdef | 2 -
.../microkernel/benchmark/footprint/micro_reg.mdef | 21 -
.../microkernel/benchmark/footprint/min/arm.conf | 12 -
.../benchmark/footprint/min/galileo.conf | 22 -
.../microkernel/benchmark/footprint/min/x86.conf | 16 -
.../microkernel/benchmark/footprint/reg/arm.conf | 9 -
.../microkernel/benchmark/footprint/reg/x86.conf | 8 -
.../microkernel/benchmark/footprint/src/Makefile | 1 -
.../footprint/src/microkernel_footprint.c | 175 --
.../benchmark/footprint/src/test_asm_inline_gcc.h | 66 -
.../microkernel/benchmark/footprint/testcase.ini | 24 -
.../microkernel/benchmark/latency_measure/Makefile | 6 -
.../benchmark/latency_measure/README.txt | 87 -
.../microkernel/benchmark/latency_measure/prj.conf | 10 -
.../microkernel/benchmark/latency_measure/prj.mdef | 76 -
.../benchmark/latency_measure/src/Makefile | 15 -
.../benchmark/latency_measure/src/main.c | 128 --
.../latency_measure/src/micro_int_to_task.c | 91 -
.../latency_measure/src/micro_int_to_task_evt.c | 90 -
.../latency_measure/src/micro_sema_lock_release.c | 123 --
.../latency_measure/src/micro_task_switch_yield.c | 116 --
.../latency_measure/src/nano_ctx_switch.c | 124 --
.../benchmark/latency_measure/src/nano_int.c | 85 -
.../latency_measure/src/nano_int_lock_unlock.c | 66 -
.../latency_measure/src/nano_int_to_fiber.c | 96 -
.../latency_measure/src/nano_int_to_fiber_sem.c | 120 --
.../latency_measure/src/test_asm_inline_gcc.h | 36 -
.../benchmark/latency_measure/src/timestamp.h | 143 --
.../benchmark/latency_measure/src/utils.c | 32 -
.../benchmark/latency_measure/src/utils.h | 99 -
.../benchmark/latency_measure/testcase.ini | 4 -
samples/microkernel/benchmark/sys_kernel/Makefile | 7 -
.../microkernel/benchmark/sys_kernel/README.txt | 175 --
samples/microkernel/benchmark/sys_kernel/prj.conf | 9 -
samples/microkernel/benchmark/sys_kernel/prj.mdef | 6 -
.../microkernel/benchmark/sys_kernel/testcase.ini | 4 -
samples/microkernel/test/test_aes/Makefile | 7 -
samples/microkernel/test/test_aes/README.txt | 48 -
samples/microkernel/test/test_aes/prj.mdef | 5 -
samples/microkernel/test/test_aes/prj_arm.conf | 3 -
samples/microkernel/test/test_aes/prj_x86.conf | 3 -
samples/microkernel/test/test_aes/testcase.ini | 4 -
samples/microkernel/test/test_bluetooth/Makefile | 7 -
samples/microkernel/test/test_bluetooth/prj.mdef | 5 -
.../microkernel/test/test_bluetooth/prj_arm.conf | 8 -
.../microkernel/test/test_bluetooth/prj_x86.conf | 8 -
.../microkernel/test/test_bluetooth/testcase.ini | 3 -
samples/microkernel/test/test_cbc/Makefile | 7 -
samples/microkernel/test/test_cbc/README.txt | 43 -
samples/microkernel/test/test_cbc/prj.mdef | 5 -
samples/microkernel/test/test_cbc/prj_arm.conf | 4 -
samples/microkernel/test/test_cbc/prj_x86.conf | 4 -
samples/microkernel/test/test_cbc/testcase.ini | 4 -
samples/microkernel/test/test_ccm_mode/Makefile | 7 -
samples/microkernel/test/test_ccm_mode/README.txt | 60 -
samples/microkernel/test/test_ccm_mode/prj.mdef | 5 -
.../microkernel/test/test_ccm_mode/prj_arm.conf | 4 -
.../microkernel/test/test_ccm_mode/prj_x86.conf | 4 -
.../microkernel/test/test_ccm_mode/testcase.ini | 4 -
samples/microkernel/test/test_cmac_mode/Makefile | 7 -
samples/microkernel/test/test_cmac_mode/README.txt | 51 -
samples/microkernel/test/test_cmac_mode/prj.mdef | 5 -
.../microkernel/test/test_cmac_mode/prj_arm.conf | 4 -
.../microkernel/test/test_cmac_mode/prj_x86.conf | 4 -
.../microkernel/test/test_cmac_mode/testcase.ini | 4 -
samples/microkernel/test/test_critical/Makefile | 6 -
samples/microkernel/test/test_critical/README.txt | 51 -
samples/microkernel/test/test_critical/prj.mdef | 11 -
.../microkernel/test/test_critical/prj_arm.conf | 2 -
.../microkernel/test/test_critical/prj_x86.conf | 6 -
.../microkernel/test/test_critical/src/Makefile | 3 -
.../microkernel/test/test_critical/src/critical.c | 164 --
.../microkernel/test/test_critical/testcase.ini | 3 -
samples/microkernel/test/test_ctr/Makefile | 7 -
samples/microkernel/test/test_ctr/README.txt | 43 -
samples/microkernel/test/test_ctr/prj.mdef | 5 -
samples/microkernel/test/test_ctr/prj_arm.conf | 4 -
samples/microkernel/test/test_ctr/prj_x86.conf | 4 -
samples/microkernel/test/test_ctr/testcase.ini | 4 -
samples/microkernel/test/test_events/Makefile | 7 -
samples/microkernel/test/test_events/README.txt | 45 -
samples/microkernel/test/test_events/prj.mdef | 15 -
samples/microkernel/test/test_events/prj_arm.conf | 1 -
samples/microkernel/test/test_events/prj_x86.conf | 5 -
samples/microkernel/test/test_events/src/Makefile | 3 -
samples/microkernel/test/test_events/src/events.c | 587 ------
.../microkernel/test/test_events/src/test_fiber.c | 80 -
samples/microkernel/test/test_events/testcase.ini | 3 -
samples/microkernel/test/test_fifo/Makefile | 6 -
samples/microkernel/test/test_fifo/README.txt | 86 -
samples/microkernel/test/test_fifo/prj.mdef | 15 -
samples/microkernel/test/test_fifo/prj_arm.conf | 1 -
samples/microkernel/test/test_fifo/prj_x86.conf | 4 -
samples/microkernel/test/test_fifo/src/Makefile | 3 -
samples/microkernel/test/test_fifo/src/fifo.c | 628 ------
samples/microkernel/test/test_fifo/testcase.ini | 3 -
samples/microkernel/test/test_fifo_priv/Makefile | 9 -
samples/microkernel/test/test_fifo_priv/README.txt | 87 -
samples/microkernel/test/test_fifo_priv/prj.mdef | 21 -
.../microkernel/test/test_fifo_priv/prj_arm.conf | 1 -
.../microkernel/test/test_fifo_priv/prj_x86.conf | 4 -
.../microkernel/test/test_fifo_priv/testcase.ini | 3 -
samples/microkernel/test/test_fp_sharing/Makefile | 6 -
.../microkernel/test/test_fp_sharing/README.txt | 53 -
samples/microkernel/test/test_fp_sharing/prj.mdef | 8 -
.../microkernel/test/test_fp_sharing/prj_x86.conf | 11 -
.../microkernel/test/test_fp_sharing/src/Makefile | 4 -
.../test/test_fp_sharing/src/float_context.h | 99 -
.../test/test_fp_sharing/src/float_regs_x86_gcc.h | 210 --
.../microkernel/test/test_fp_sharing/src/main.c | 391 ----
samples/microkernel/test/test_fp_sharing/src/pi.c | 166 --
samples/microkernel/test/test_hmac/Makefile | 7 -
samples/microkernel/test/test_hmac/README.txt | 57 -
samples/microkernel/test/test_hmac/pjr_arm.conf | 4 -
samples/microkernel/test/test_hmac/prj.mdef | 5 -
samples/microkernel/test/test_hmac/prj_arm.conf | 4 -
samples/microkernel/test/test_hmac/prj_x86.conf | 4 -
samples/microkernel/test/test_hmac/testcase.ini | 4 -
samples/microkernel/test/test_libs/Makefile | 6 -
samples/microkernel/test/test_libs/README.txt | 49 -
samples/microkernel/test/test_libs/prj.mdef | 11 -
samples/microkernel/test/test_libs/prj_arm.conf | 1 -
samples/microkernel/test/test_libs/prj_x86.conf | 4 -
samples/microkernel/test/test_libs/src/Makefile | 4 -
samples/microkernel/test/test_libs/src/libraries.c | 410 ----
samples/microkernel/test/test_libs/src/main.c | 104 -
samples/microkernel/test/test_libs/testcase.ini | 3 -
samples/microkernel/test/test_mail/Makefile | 6 -
samples/microkernel/test/test_mail/README.txt | 61 -
samples/microkernel/test/test_mail/prj.mdef | 24 -
samples/microkernel/test/test_mail/prj_arm.conf | 1 -
samples/microkernel/test/test_mail/prj_x86.conf | 4 -
samples/microkernel/test/test_mail/src/Makefile | 3 -
samples/microkernel/test/test_mail/src/mail.c | 682 -------
samples/microkernel/test/test_mail/src/main.c | 135 --
samples/microkernel/test/test_mail/testcase.ini | 3 -
samples/microkernel/test/test_mail_priv/Makefile | 10 -
samples/microkernel/test/test_mail_priv/README.txt | 62 -
samples/microkernel/test/test_mail_priv/prj.mdef | 30 -
.../microkernel/test/test_mail_priv/prj_arm.conf | 1 -
.../microkernel/test/test_mail_priv/prj_x86.conf | 4 -
.../microkernel/test/test_mail_priv/testcase.ini | 3 -
samples/microkernel/test/test_map/Makefile | 6 -
samples/microkernel/test/test_map/README.txt | 80 -
samples/microkernel/test/test_map/prj.mdef | 15 -
samples/microkernel/test/test_map/prj_arm.conf | 1 -
samples/microkernel/test/test_map/prj_x86.conf | 4 -
samples/microkernel/test/test_map/src/Makefile | 3 -
samples/microkernel/test/test_map/src/map.c | 397 ----
samples/microkernel/test/test_map/testcase.ini | 3 -
samples/microkernel/test/test_map_priv/Makefile | 10 -
samples/microkernel/test/test_map_priv/README.txt | 81 -
samples/microkernel/test/test_map_priv/prj.mdef | 21 -
.../microkernel/test/test_map_priv/prj_arm.conf | 1 -
.../microkernel/test/test_map_priv/prj_x86.conf | 4 -
.../microkernel/test/test_map_priv/testcase.ini | 3 -
samples/microkernel/test/test_mutex/Makefile | 6 -
samples/microkernel/test/test_mutex/README.txt | 39 -
samples/microkernel/test/test_mutex/prj.mdef | 19 -
samples/microkernel/test/test_mutex/prj_arm.conf | 2 -
samples/microkernel/test/test_mutex/prj_x86.conf | 6 -
samples/microkernel/test/test_mutex/src/Makefile | 3 -
samples/microkernel/test/test_mutex/src/mutex.c | 385 ----
samples/microkernel/test/test_mutex/src/task50.c | 63 -
samples/microkernel/test/test_mutex/testcase.ini | 3 -
samples/microkernel/test/test_pipe/Makefile | 6 -
samples/microkernel/test/test_pipe/README.txt | 42 -
samples/microkernel/test/test_pipe/prj.mdef | 19 -
samples/microkernel/test/test_pipe/prj_arm.conf | 1 -
samples/microkernel/test/test_pipe/prj_x86.conf | 4 -
samples/microkernel/test/test_pipe/src/Makefile | 3 -
samples/microkernel/test/test_pipe/src/main.c | 128 --
samples/microkernel/test/test_pipe/src/pipe.c | 1046 ----------
samples/microkernel/test/test_pipe/testcase.ini | 3 -
samples/microkernel/test/test_pipe_priv/Makefile | 10 -
samples/microkernel/test/test_pipe_priv/README.txt | 43 -
samples/microkernel/test/test_pipe_priv/prj.mdef | 25 -
.../microkernel/test/test_pipe_priv/prj_arm.conf | 1 -
.../microkernel/test/test_pipe_priv/prj_x86.conf | 4 -
.../microkernel/test/test_pipe_priv/testcase.ini | 3 -
samples/microkernel/test/test_pool/Makefile | 6 -
samples/microkernel/test/test_pool/README.txt | 41 -
samples/microkernel/test/test_pool/prj.mdef | 20 -
samples/microkernel/test/test_pool/prj_arm.conf | 1 -
samples/microkernel/test/test_pool/prj_x86.conf | 4 -
samples/microkernel/test/test_pool/src/Makefile | 3 -
samples/microkernel/test/test_pool/src/pool.c | 480 -----
samples/microkernel/test/test_pool/testcase.ini | 3 -
samples/microkernel/test/test_prng/Makefile | 7 -
samples/microkernel/test/test_prng/README.txt | 46 -
samples/microkernel/test/test_prng/prj.mdef | 5 -
samples/microkernel/test/test_prng/prj_arm.conf | 5 -
samples/microkernel/test/test_prng/prj_x86.conf | 5 -
samples/microkernel/test/test_prng/testcase.ini | 5 -
samples/microkernel/test/test_rand32/Makefile | 23 -
samples/microkernel/test/test_rand32/README.txt | 30 -
samples/microkernel/test/test_rand32/prj.conf | 5 -
samples/microkernel/test/test_rand32/prj.mdef | 6 -
samples/microkernel/test/test_rand32/src/Makefile | 3 -
.../microkernel/test/test_rand32/src/test-rand32.c | 81 -
samples/microkernel/test/test_rand32/testcase.ini | 3 -
samples/microkernel/test/test_sema/Makefile | 6 -
samples/microkernel/test/test_sema/README.txt | 42 -
samples/microkernel/test/test_sema/prj.mdef | 29 -
samples/microkernel/test/test_sema/prj_arm.conf | 1 -
samples/microkernel/test/test_sema/prj_x86.conf | 5 -
samples/microkernel/test/test_sema/src/Makefile | 3 -
samples/microkernel/test/test_sema/src/README | 24 -
samples/microkernel/test/test_sema/src/main.c | 239 ---
samples/microkernel/test/test_sema/src/sema.c | 657 -------
.../microkernel/test/test_sema/src/test_fiber.c | 84 -
samples/microkernel/test/test_sema/testcase.ini | 3 -
samples/microkernel/test/test_sema_priv/Makefile | 10 -
samples/microkernel/test/test_sema_priv/README.txt | 44 -
samples/microkernel/test/test_sema_priv/prj.mdef | 36 -
.../microkernel/test/test_sema_priv/prj_arm.conf | 1 -
.../microkernel/test/test_sema_priv/prj_x86.conf | 5 -
.../microkernel/test/test_sema_priv/testcase.ini | 3 -
samples/microkernel/test/test_sha256/Makefile | 7 -
samples/microkernel/test/test_sha256/README.txt | 79 -
samples/microkernel/test/test_sha256/prj.mdef | 5 -
samples/microkernel/test/test_sha256/prj_arm.conf | 3 -
samples/microkernel/test/test_sha256/prj_x86.conf | 3 -
samples/microkernel/test/test_sha256/testcase.ini | 5 -
samples/microkernel/test/test_sprintf/Makefile | 6 -
samples/microkernel/test/test_sprintf/README.txt | 45 -
samples/microkernel/test/test_sprintf/prj.mdef | 5 -
samples/microkernel/test/test_sprintf/prj_arm.conf | 2 -
samples/microkernel/test/test_sprintf/prj_x86.conf | 8 -
samples/microkernel/test/test_sprintf/src/Makefile | 3 -
.../test/test_sprintf/src/test_sprintf.c | 756 -------
samples/microkernel/test/test_sprintf/testcase.ini | 4 -
samples/microkernel/test/test_stackprot/Makefile | 6 -
samples/microkernel/test/test_stackprot/README.txt | 52 -
samples/microkernel/test/test_stackprot/prj.mdef | 6 -
.../microkernel/test/test_stackprot/prj_arm.conf | 6 -
.../microkernel/test/test_stackprot/prj_x86.conf | 5 -
.../microkernel/test/test_stackprot/src/Makefile | 3 -
.../test/test_stackprot/src/stackprot.c | 167 --
.../microkernel/test/test_stackprot/testcase.ini | 3 -
samples/microkernel/test/test_static_idt/Makefile | 6 -
.../microkernel/test/test_static_idt/README.txt | 45 -
samples/microkernel/test/test_static_idt/prj.mdef | 6 -
.../microkernel/test/test_static_idt/prj_x86.conf | 5 -
.../microkernel/test/test_static_idt/src/Makefile | 3 -
.../test/test_static_idt/src/static_idt.c | 265 ---
.../test/test_static_idt/src/test_asm_inline_gcc.h | 29 -
.../test/test_static_idt/src/test_stubs.S | 76 -
.../microkernel/test/test_static_idt/testcase.ini | 4 -
samples/microkernel/test/test_task/Makefile | 6 -
samples/microkernel/test/test_task/README.txt | 45 -
samples/microkernel/test/test_task/prj.mdef | 15 -
samples/microkernel/test/test_task/prj_arm.conf | 3 -
samples/microkernel/test/test_task/prj_x86.conf | 7 -
samples/microkernel/test/test_task/src/Makefile | 3 -
samples/microkernel/test/test_task/src/task.c | 527 -----
samples/microkernel/test/test_task/testcase.ini | 3 -
samples/microkernel/test/test_task_irq/Makefile | 6 -
samples/microkernel/test/test_task_irq/README.txt | 58 -
samples/microkernel/test/test_task_irq/prj.mdef | 14 -
.../microkernel/test/test_task_irq/prj_arm.conf | 6 -
.../microkernel/test/test_task_irq/prj_x86.conf | 5 -
.../microkernel/test/test_task_irq/src/Makefile | 3 -
samples/microkernel/test/test_task_irq/src/main.c | 147 --
.../microkernel/test/test_task_irq/src/raise_int.c | 1406 -------------
.../test/test_task_irq/src/test_device.c | 185 --
.../microkernel/test/test_task_irq/testcase.ini | 3 -
samples/microkernel/test/test_task_priv/Makefile | 10 -
samples/microkernel/test/test_task_priv/README.txt | 46 -
samples/microkernel/test/test_task_priv/prj.mdef | 17 -
.../microkernel/test/test_task_priv/prj_arm.conf | 2 -
.../microkernel/test/test_task_priv/prj_x86.conf | 7 -
.../microkernel/test/test_task_priv/testcase.ini | 3 -
samples/microkernel/test/test_tickless/Makefile | 6 -
samples/microkernel/test/test_tickless/README.txt | 55 -
samples/microkernel/test/test_tickless/prj.mdef | 5 -
.../microkernel/test/test_tickless/prj_arm.conf | 3 -
.../microkernel/test/test_tickless/prj_x86.conf | 7 -
.../microkernel/test/test_tickless/src/Makefile | 6 -
.../test/test_tickless/src/test_tickless.c | 191 --
.../test/test_tickless/src/timestamps.c | 250 ---
.../microkernel/test/test_tickless/testcase.ini | 4 -
samples/microkernel/test/test_timer/Makefile | 6 -
samples/microkernel/test/test_timer/README.txt | 76 -
samples/microkernel/test/test_timer/prj.mdef | 11 -
samples/microkernel/test/test_timer/prj_arm.conf | 6 -
samples/microkernel/test/test_timer/prj_x86.conf | 9 -
samples/microkernel/test/test_timer/src/Makefile | 4 -
samples/microkernel/test/test_timer/src/timer.c | 371 ----
samples/microkernel/test/test_timer/testcase.ini | 3 -
samples/microkernel/test/test_xip/Makefile | 6 -
samples/microkernel/test/test_xip/README.txt | 37 -
samples/microkernel/test/test_xip/prj.conf | 2 -
samples/microkernel/test/test_xip/prj.mdef | 5 -
samples/microkernel/test/test_xip/src/Makefile | 3 -
samples/microkernel/test/test_xip/src/test.h | 35 -
samples/microkernel/test/test_xip/src/test_xip.c | 76 -
.../test/test_xip/src/test_xip_helper.c | 33 -
samples/microkernel/test/test_xip/testcase.ini | 3 -
samples/nanokernel/apps/adc/Makefile | 5 -
samples/nanokernel/apps/adc/prj_arc.conf | 4 -
samples/nanokernel/apps/adc/prj_x86.conf | 2 -
samples/nanokernel/apps/adc/src/Makefile | 3 -
samples/nanokernel/apps/adc/src/adc.c | 104 -
samples/nanokernel/apps/adc/testcase.ini | 6 -
samples/nanokernel/apps/aio_dw_comparator/Makefile | 5 -
samples/nanokernel/apps/aio_dw_comparator/prj.conf | 4 -
.../nanokernel/apps/aio_dw_comparator/src/Makefile | 1 -
.../nanokernel/apps/aio_dw_comparator/src/main.c | 118 --
.../nanokernel/apps/aio_dw_comparator/testcase.ini | 6 -
samples/nanokernel/apps/bluetooth/init/Makefile | 7 -
.../nanokernel/apps/bluetooth/init/prj_arm.conf | 5 -
.../nanokernel/apps/bluetooth/init/prj_x86.conf | 5 -
samples/nanokernel/apps/bluetooth/init/tescase.ini | 4 -
samples/nanokernel/apps/bluetooth/shell/Makefile | 27 -
.../nanokernel/apps/bluetooth/shell/prj_arm.conf | 6 -
.../nanokernel/apps/bluetooth/shell/prj_x86.conf | 6 -
.../nanokernel/apps/bluetooth/shell/tescase.ini | 4 -
.../nanokernel/apps/cpp_synchronization/Makefile | 7 -
.../nanokernel/apps/cpp_synchronization/README.txt | 51 -
.../nanokernel/apps/cpp_synchronization/prj.conf | 2 -
.../apps/cpp_synchronization/testcase.ini | 4 -
samples/nanokernel/apps/current_sensing/Makefile | 5 -
samples/nanokernel/apps/current_sensing/README | 8 -
samples/nanokernel/apps/current_sensing/prj.conf | 4 -
.../nanokernel/apps/current_sensing/src/Makefile | 1 -
samples/nanokernel/apps/current_sensing/src/main.c | 138 --
.../nanokernel/apps/current_sensing/testcase.ini | 6 -
samples/nanokernel/apps/gpio/Makefile | 14 -
samples/nanokernel/apps/gpio/prj_arc.conf | 9 -
samples/nanokernel/apps/gpio/prj_arm.conf | 6 -
samples/nanokernel/apps/gpio/prj_x86.conf | 7 -
samples/nanokernel/apps/gpio/src/Makefile | 1 -
samples/nanokernel/apps/gpio/src/main.c | 196 --
samples/nanokernel/apps/gpio/testcase.ini | 7 -
samples/nanokernel/apps/grove_lcd/Makefile | 5 -
samples/nanokernel/apps/grove_lcd/README | 11 -
samples/nanokernel/apps/grove_lcd/prj.conf | 9 -
samples/nanokernel/apps/grove_lcd/src/Makefile | 1 -
samples/nanokernel/apps/grove_lcd/src/grove_lcd.c | 141 --
samples/nanokernel/apps/grove_lcd/testcase.ini | 6 -
samples/nanokernel/apps/hello_world/Makefile | 5 -
samples/nanokernel/apps/hello_world/README.txt | 32 -
samples/nanokernel/apps/hello_world/prj.conf | 1 -
samples/nanokernel/apps/hello_world/src/Makefile | 1 -
samples/nanokernel/apps/hello_world/src/main.c | 39 -
samples/nanokernel/apps/i2c_fujitsu_fram/Makefile | 5 -
samples/nanokernel/apps/i2c_fujitsu_fram/README | 6 -
samples/nanokernel/apps/i2c_fujitsu_fram/prj.conf | 4 -
.../nanokernel/apps/i2c_fujitsu_fram/src/Makefile | 1 -
.../nanokernel/apps/i2c_fujitsu_fram/src/main.c | 163 --
.../nanokernel/apps/i2c_fujitsu_fram/testcase.ini | 6 -
.../nanokernel/apps/kernel_event_logger/Makefile | 6 -
.../nanokernel/apps/kernel_event_logger/README.txt | 58 -
.../apps/kernel_event_logger/prj_arm.conf | 10 -
.../apps/kernel_event_logger/prj_x86.conf | 10 -
.../apps/kernel_event_logger/testcase.ini | 5 -
samples/nanokernel/apps/led_apa102c/Makefile | 6 -
samples/nanokernel/apps/led_apa102c/prj_x86.conf | 7 -
samples/nanokernel/apps/led_apa102c/src/Makefile | 1 -
samples/nanokernel/apps/led_apa102c/src/main.c | 139 --
samples/nanokernel/apps/led_apa102c/testcase.ini | 6 -
samples/nanokernel/apps/net/echo_server/Makefile | 26 -
samples/nanokernel/apps/net/echo_server/prj.mdef | 11 -
.../nanokernel/apps/net/echo_server/prj_arm.conf | 5 -
.../nanokernel/apps/net/echo_server/prj_x86.conf | 6 -
samples/nanokernel/apps/net/listener/Makefile | 25 -
samples/nanokernel/apps/net/listener/prj.mdef | 5 -
samples/nanokernel/apps/net/listener/prj_arm.conf | 5 -
samples/nanokernel/apps/net/listener/prj_x86.conf | 5 -
samples/nanokernel/apps/net/loopback_test/Makefile | 25 -
samples/nanokernel/apps/net/loopback_test/prj.mdef | 5 -
.../nanokernel/apps/net/loopback_test/prj_arm.conf | 3 -
.../nanokernel/apps/net/loopback_test/prj_x86.conf | 3 -
samples/nanokernel/apps/pci_enum/Makefile | 6 -
samples/nanokernel/apps/pci_enum/prj_x86.conf | 5 -
samples/nanokernel/apps/pci_enum/testcase.ini | 6 -
samples/nanokernel/apps/philosophers/Makefile | 6 -
samples/nanokernel/apps/philosophers/README.txt | 61 -
samples/nanokernel/apps/philosophers/prj_arc.conf | 2 -
samples/nanokernel/apps/philosophers/prj_arm.conf | 2 -
samples/nanokernel/apps/philosophers/prj_x86.conf | 3 -
samples/nanokernel/apps/philosophers/testcase.ini | 4 -
samples/nanokernel/apps/pwm_dw/Makefile | 6 -
samples/nanokernel/apps/pwm_dw/prj_x86.conf | 6 -
samples/nanokernel/apps/pwm_dw/src/Makefile | 1 -
samples/nanokernel/apps/pwm_dw/src/main.c | 103 -
samples/nanokernel/apps/pwm_dw/testcase.ini | 6 -
samples/nanokernel/apps/rtc/Makefile | 5 -
samples/nanokernel/apps/rtc/rtc.config | 4 -
samples/nanokernel/apps/rtc/src/Makefile | 1 -
samples/nanokernel/apps/rtc/src/main.c | 53 -
samples/nanokernel/apps/rtc/testcase.ini | 4 -
samples/nanokernel/apps/shell/Makefile | 5 -
samples/nanokernel/apps/shell/prj.conf | 3 -
samples/nanokernel/apps/shell/src/Makefile | 1 -
samples/nanokernel/apps/shell/src/main.c | 48 -
samples/nanokernel/apps/spi_lsm9ds0/Makefile | 5 -
samples/nanokernel/apps/spi_lsm9ds0/README | 21 -
samples/nanokernel/apps/spi_lsm9ds0/prj.conf | 1 -
samples/nanokernel/apps/spi_lsm9ds0/src/Makefile | 1 -
samples/nanokernel/apps/spi_lsm9ds0/src/main.c | 83 -
samples/nanokernel/apps/spi_test/Makefile | 5 -
samples/nanokernel/apps/spi_test/prj_x86.conf | 1 -
samples/nanokernel/apps/spi_test/src/Makefile | 3 -
samples/nanokernel/apps/spi_test/src/spi.c | 95 -
samples/nanokernel/apps/spi_test/testcase.ini | 6 -
samples/nanokernel/apps/synchronization/Makefile | 6 -
samples/nanokernel/apps/synchronization/README.txt | 48 -
samples/nanokernel/apps/synchronization/prj.conf | 1 -
.../nanokernel/apps/synchronization/src/Makefile | 1 -
samples/nanokernel/apps/synchronization/src/main.c | 95 -
.../nanokernel/apps/synchronization/testcase.ini | 4 -
samples/nanokernel/apps/watchdog/Makefile | 5 -
samples/nanokernel/apps/watchdog/src/Makefile | 1 -
samples/nanokernel/apps/watchdog/src/main.c | 58 -
samples/nanokernel/apps/watchdog/testcase.ini | 4 -
samples/nanokernel/apps/watchdog/watchdog.config | 2 -
samples/nanokernel/benchmark/boot_time/Makefile | 14 -
samples/nanokernel/benchmark/boot_time/README.txt | 66 -
.../nanokernel/benchmark/boot_time/ia32/prj.conf | 6 -
.../benchmark/boot_time/ia32/prj_expert_test.conf | 7 -
.../benchmark/boot_time/ia32_pci/prj.conf | 4 -
.../boot_time/quark_d2000/quark_d2000_prj.conf | 7 -
.../benchmark/boot_time/quark_se/quark_se_prj.conf | 7 -
.../nanokernel/benchmark/boot_time/testcase.ini | 4 -
samples/nanokernel/benchmark/footprint/Makefile | 20 -
samples/nanokernel/benchmark/footprint/README.txt | 101 -
.../nanokernel/benchmark/footprint/float/x86.conf | 8 -
.../nanokernel/benchmark/footprint/max/arm.conf | 4 -
.../nanokernel/benchmark/footprint/max/x86.conf | 4 -
.../nanokernel/benchmark/footprint/min/arc.conf | 8 -
.../nanokernel/benchmark/footprint/min/arm.conf | 8 -
.../benchmark/footprint/min/galileo.conf | 17 -
.../benchmark/footprint/min/quark_d2000.conf | 9 -
.../nanokernel/benchmark/footprint/min/x86.conf | 11 -
.../nanokernel/benchmark/footprint/reg/arm.conf | 5 -
.../nanokernel/benchmark/footprint/reg/x86.conf | 4 -
.../nanokernel/benchmark/footprint/src/Makefile | 1 -
.../benchmark/footprint/src/nanokernel_footprint.c | 174 --
.../benchmark/footprint/src/test_asm_inline_gcc.h | 66 -
.../nanokernel/benchmark/footprint/testcase.ini | 23 -
.../nanokernel/benchmark/latency_measure/Makefile | 6 -
.../benchmark/latency_measure/README.txt | 62 -
.../nanokernel/benchmark/latency_measure/prj.conf | 7 -
.../benchmark/latency_measure/testcase.ini | 4 -
.../nanokernel/benchmark/object_footprint/Kconfig | 57 -
.../nanokernel/benchmark/object_footprint/Makefile | 10 -
.../benchmark/object_footprint/README.txt | 12 -
.../benchmark/object_footprint/prj00.conf | 11 -
.../benchmark/object_footprint/prj01.conf | 10 -
.../benchmark/object_footprint/prj02.conf | 11 -
.../benchmark/object_footprint/prj03.conf | 11 -
.../benchmark/object_footprint/prj04.conf | 11 -
.../benchmark/object_footprint/prj05.conf | 13 -
.../benchmark/object_footprint/prj06.conf | 14 -
.../benchmark/object_footprint/prj07.conf | 15 -
.../benchmark/object_footprint/prj08.conf | 16 -
.../benchmark/object_footprint/prj09.conf | 17 -
.../benchmark/object_footprint/prj10.conf | 20 -
.../benchmark/object_footprint/prj11.conf | 20 -
.../nanokernel/benchmark/object_footprint/run.sh | 11 -
.../benchmark/object_footprint/src/Makefile | 1 -
.../object_footprint/src/nanokernel_objects.c | 165 --
.../object_footprint/src/test_asm_inline_gcc.h | 67 -
samples/nanokernel/benchmark/sys_kernel/Makefile | 5 -
samples/nanokernel/benchmark/sys_kernel/README.txt | 175 --
.../benchmark/sys_kernel/prj_console.conf | 4 -
.../nanokernel/benchmark/sys_kernel/src/Makefile | 8 -
samples/nanokernel/benchmark/sys_kernel/src/lifo.c | 255 ---
.../nanokernel/benchmark/sys_kernel/src/mwfifo.c | 251 ---
samples/nanokernel/benchmark/sys_kernel/src/sema.c | 186 --
.../nanokernel/benchmark/sys_kernel/src/stack.c | 233 ---
.../benchmark/sys_kernel/src/syskernel.c | 205 --
.../benchmark/sys_kernel/src/syskernel.h | 71 -
.../nanokernel/benchmark/sys_kernel/testcase.ini | 4 -
.../test/test_arm_m3_irq_vector_table/Makefile | 5 -
.../test/test_arm_m3_irq_vector_table/README.txt | 40 -
.../test/test_arm_m3_irq_vector_table/prj.conf | 4 -
.../test/test_arm_m3_irq_vector_table/src/Makefile | 3 -
.../test/test_arm_m3_irq_vector_table/src/main.c | 122 --
.../test/test_arm_m3_irq_vector_table/testcase.ini | 4 -
samples/nanokernel/test/test_atomic/Makefile | 4 -
samples/nanokernel/test/test_atomic/README.txt | 55 -
samples/nanokernel/test/test_atomic/src/Makefile | 3 -
samples/nanokernel/test/test_atomic/src/atomic.c | 164 --
samples/nanokernel/test/test_atomic/testcase.ini | 2 -
samples/nanokernel/test/test_bluetooth/Makefile | 6 -
.../nanokernel/test/test_bluetooth/prj_arm.conf | 8 -
.../nanokernel/test/test_bluetooth/prj_x86.conf | 8 -
.../nanokernel/test/test_bluetooth/testcase.ini | 4 -
samples/nanokernel/test/test_build/Makefile | 6 -
samples/nanokernel/test/test_build/debug.conf | 2 -
samples/nanokernel/test/test_build/newlib.conf | 3 -
samples/nanokernel/test/test_build/testcase.ini | 13 -
samples/nanokernel/test/test_context/Makefile | 5 -
samples/nanokernel/test/test_context/README.txt | 80 -
samples/nanokernel/test/test_context/prj_arm.conf | 3 -
samples/nanokernel/test/test_context/prj_x86.conf | 7 -
samples/nanokernel/test/test_context/src/Makefile | 4 -
samples/nanokernel/test/test_context/src/README | 51 -
samples/nanokernel/test/test_context/src/context.c | 945 ---------
samples/nanokernel/test/test_context/testcase.ini | 5 -
samples/nanokernel/test/test_errno/Makefile | 6 -
samples/nanokernel/test/test_errno/README.txt | 43 -
samples/nanokernel/test/test_errno/prj.conf | 1 -
samples/nanokernel/test/test_errno/src/Makefile | 3 -
samples/nanokernel/test/test_errno/src/main.c | 96 -
samples/nanokernel/test/test_errno/testcase.ini | 3 -
samples/nanokernel/test/test_fifo/Makefile | 5 -
samples/nanokernel/test/test_fifo/README.txt | 121 --
samples/nanokernel/test/test_fifo/prj.conf | 8 -
samples/nanokernel/test/test_fifo/src/Makefile | 4 -
samples/nanokernel/test/test_fifo/src/fifo.c | 713 -------
.../nanokernel/test/test_fifo/src/fifo_timeout.c | 498 -----
samples/nanokernel/test/test_fifo/testcase.ini | 4 -
samples/nanokernel/test/test_fp_sharing/Makefile | 6 -
samples/nanokernel/test/test_fp_sharing/README.txt | 44 -
.../nanokernel/test/test_fp_sharing/prj_x86.conf | 9 -
samples/nanokernel/test/test_ipm/Makefile | 5 -
samples/nanokernel/test/test_ipm/prj.conf | 5 -
samples/nanokernel/test/test_ipm/src/Makefile | 4 -
samples/nanokernel/test/test_ipm/src/ipm_dummy.c | 144 --
samples/nanokernel/test/test_ipm/src/ipm_dummy.h | 42 -
samples/nanokernel/test/test_ipm/src/test_ipm.c | 120 --
samples/nanokernel/test/test_ipm/testcase.ini | 2 -
samples/nanokernel/test/test_lifo/Makefile | 5 -
samples/nanokernel/test/test_lifo/README.txt | 85 -
samples/nanokernel/test/test_lifo/prj.conf | 8 -
samples/nanokernel/test/test_lifo/src/Makefile | 4 -
samples/nanokernel/test/test_lifo/src/README | 35 -
samples/nanokernel/test/test_lifo/src/lifo.c | 1087 ----------
samples/nanokernel/test/test_lifo/testcase.ini | 4 -
samples/nanokernel/test/test_mem_safe/Makefile | 5 -
samples/nanokernel/test/test_mem_safe/README.txt | 96 -
samples/nanokernel/test/test_mem_safe/prj.conf | 3 -
samples/nanokernel/test/test_mem_safe/src/Makefile | 4 -
.../nanokernel/test/test_mem_safe/src/asm_arm.S | 0
.../nanokernel/test/test_mem_safe/src/asm_x86.S | 30 -
samples/nanokernel/test/test_mem_safe/src/main.c | 412 ----
samples/nanokernel/test/test_mem_safe/testcase.ini | 4 -
samples/nanokernel/test/test_ring_buf/Makefile | 5 -
samples/nanokernel/test/test_ring_buf/prj.conf | 2 -
samples/nanokernel/test/test_ring_buf/src/Makefile | 4 -
.../test/test_ring_buf/src/test_ring_buf.c | 107 -
samples/nanokernel/test/test_ring_buf/testcase.ini | 3 -
samples/nanokernel/test/test_sema/Makefile | 5 -
samples/nanokernel/test/test_sema/README.txt | 86 -
samples/nanokernel/test/test_sema/prj.conf | 6 -
samples/nanokernel/test/test_sema/src/Makefile | 4 -
samples/nanokernel/test/test_sema/src/README | 33 -
samples/nanokernel/test/test_sema/src/sema.c | 976 ---------
samples/nanokernel/test/test_sema/testcase.ini | 4 -
samples/nanokernel/test/test_stack/Makefile | 5 -
samples/nanokernel/test/test_stack/README.txt | 90 -
samples/nanokernel/test/test_stack/prj.conf | 5 -
samples/nanokernel/test/test_stack/src/Makefile | 3 -
samples/nanokernel/test/test_stack/src/stack.c | 576 ------
samples/nanokernel/test/test_stack/testcase.ini | 2 -
samples/nanokernel/test/test_stackprot/Makefile | 6 -
samples/nanokernel/test/test_stackprot/README.txt | 50 -
.../nanokernel/test/test_stackprot/prj_arc.conf | 5 -
.../nanokernel/test/test_stackprot/prj_arm.conf | 6 -
.../nanokernel/test/test_stackprot/prj_x86.conf | 6 -
.../nanokernel/test/test_stackprot/testcase.ini | 4 -
samples/nanokernel/test/test_static_idt/Makefile | 6 -
samples/nanokernel/test/test_static_idt/README.txt | 46 -
.../nanokernel/test/test_static_idt/prj_x86.conf | 5 -
.../nanokernel/test/test_static_idt/testcase.ini | 4 -
samples/nanokernel/test/test_timer/Makefile | 5 -
samples/nanokernel/test/test_timer/README.txt | 50 -
samples/nanokernel/test/test_timer/prj_arc.conf | 1 -
samples/nanokernel/test/test_timer/prj_arm.conf | 1 -
samples/nanokernel/test/test_timer/prj_x86.conf | 4 -
samples/nanokernel/test/test_timer/src/Makefile | 4 -
samples/nanokernel/test/test_timer/src/README | 42 -
samples/nanokernel/test/test_timer/src/timer.c | 565 ------
samples/nanokernel/test/test_timer/testcase.ini | 3 -
samples/nanokernel/test/test_xip/Makefile | 6 -
samples/nanokernel/test/test_xip/README.txt | 37 -
samples/nanokernel/test/test_xip/prj_arc.conf | 2 -
samples/nanokernel/test/test_xip/prj_arm.conf | 2 -
samples/nanokernel/test/test_xip/prj_x86.conf | 2 -
samples/nanokernel/test/test_xip/testcase.ini | 3 -
samples/net/buf/Makefile | 6 -
samples/net/buf/prj.mdef | 5 -
samples/net/buf/prj_x86.conf | 2 -
samples/net/buf/src/Makefile | 1 -
samples/net/buf/src/main.c | 89 -
samples/net/buf/testcase.ini | 6 -
samples/net/coap_observe_client/Makefile | 12 +-
samples/net/coap_observe_client/prj_bt.conf | 8 +
samples/net/coap_observe_client/src/Makefile | 5 +
.../coap_observe_client/src/coap-observe-client.c | 57 +-
samples/net/coap_observe_client/testcase.ini | 18 +-
samples/net/coap_server/Makefile | 13 +-
samples/net/coap_server/prj.mdef | 4 +-
samples/net/coap_server/prj_802154.conf | 10 +
samples/net/coap_server/prj_arm.conf | 10 -
samples/net/coap_server/prj_bt.conf | 7 +
samples/net/coap_server/prj_slip.conf | 8 +
samples/net/coap_server/prj_x86.conf | 10 -
samples/net/coap_server/src/Makefile | 5 +
samples/net/coap_server/src/coap-server.c | 78 +-
samples/net/coap_server/testcase.ini | 20 +-
samples/net/dtls_client/Makefile | 6 +-
samples/net/dtls_client/prj.mdef | 5 +
samples/net/dtls_client/prj_802154.conf | 11 +
samples/net/dtls_client/prj_arm.conf | 8 -
samples/net/dtls_client/prj_slip.conf | 8 +
samples/net/dtls_client/prj_x86.conf | 8 -
samples/net/dtls_client/src/dtls-client.c | 28 +-
samples/net/dtls_client/testcase.ini | 13 +-
samples/net/dtls_server/Makefile | 14 +-
samples/net/dtls_server/prj.mdef | 5 +
samples/net/dtls_server/prj_802154.conf | 10 +
samples/net/dtls_server/prj_arm.conf | 9 -
samples/net/dtls_server/prj_bt.conf | 6 +
samples/net/dtls_server/prj_slip.conf | 9 +
samples/net/dtls_server/prj_x86.conf | 9 -
samples/net/dtls_server/src/Makefile | 5 +
samples/net/dtls_server/src/dtls-server.c | 57 +-
samples/net/dtls_server/testcase.ini | 13 +-
samples/net/echo_client/Makefile | 12 +-
samples/net/echo_client/prj.mdef | 5 +
samples/net/echo_client/prj_bt.conf | 15 +
samples/net/echo_client/src/Makefile | 5 +
samples/net/echo_client/src/echo-client.c | 89 +-
samples/net/echo_client/testcase.ini | 7 +
samples/net/echo_server/Makefile | 12 +-
samples/net/echo_server/prj.mdef | 5 +
samples/net/echo_server/prj_bt.conf | 15 +
samples/net/echo_server/prj_ethernet.conf | 9 +
samples/net/echo_server/src/Makefile | 5 +
samples/net/echo_server/src/echo-server.c | 61 +-
samples/net/echo_server/testcase.ini | 7 +
samples/net/listener/Makefile | 26 -
samples/net/listener/prj.mdef | 5 -
samples/net/listener/prj_arm.conf | 5 -
samples/net/listener/prj_x86.conf | 5 -
samples/net/listener/src/Makefile | 6 -
samples/net/listener/src/listener.c | 237 ---
samples/net/listener/testcase.ini | 5 -
samples/net/test_15_4/Makefile | 2 +-
samples/net/test_15_4/prj.mdef | 10 +
samples/nfc/nfc_hello/Makefile | 7 +
samples/nfc/nfc_hello/README.txt | 2 +
samples/nfc/nfc_hello/prj.conf | 3 +
samples/nfc/nfc_hello/src/Makefile | 3 +
samples/nfc/nfc_hello/src/main.c | 97 +
samples/nfc/nfc_hello/testcase.ini | 7 +
samples/philosophers/microkernel/Makefile | 6 +
samples/philosophers/microkernel/README.txt | 62 +
samples/philosophers/microkernel/prj.mdef | 24 +
samples/philosophers/microkernel/prj_arm.conf | 2 +
samples/philosophers/microkernel/prj_x86.conf | 3 +
samples/philosophers/microkernel/src/Makefile | 1 +
samples/philosophers/microkernel/src/phil.h | 33 +
samples/philosophers/microkernel/src/phil_fiber.c | 127 ++
samples/philosophers/microkernel/src/phil_task.c | 94 +
samples/philosophers/microkernel/testcase.ini | 4 +
samples/philosophers/nanokernel/Makefile | 6 +
samples/philosophers/nanokernel/README.txt | 61 +
samples/philosophers/nanokernel/prj_arc.conf | 2 +
samples/philosophers/nanokernel/prj_arm.conf | 2 +
samples/philosophers/nanokernel/prj_x86.conf | 3 +
samples/philosophers/nanokernel/testcase.ini | 4 +
samples/power/power_hooks/Makefile | 6 +
samples/power/power_hooks/README.txt | 18 +
samples/power/power_hooks/prj.conf | 4 +
samples/power/power_hooks/prj.mdef | 5 +
samples/power/power_hooks/src/Makefile | 1 +
samples/power/power_hooks/src/main.c | 66 +
samples/power/power_hooks/testcase.ini | 4 +
samples/shell/Makefile | 5 +
samples/shell/prj.conf | 3 +
samples/shell/src/Makefile | 1 +
samples/shell/src/main.c | 48 +
samples/synchronization/microkernel/Makefile | 6 +
samples/synchronization/microkernel/README.txt | 48 +
samples/synchronization/microkernel/prj.conf | 2 +
samples/synchronization/microkernel/prj.mdef | 11 +
samples/synchronization/microkernel/src/Makefile | 1 +
samples/synchronization/microkernel/src/main.c | 76 +
samples/synchronization/microkernel/testcase.ini | 4 +
samples/synchronization/nanokernel/Makefile | 6 +
samples/synchronization/nanokernel/README.txt | 48 +
samples/synchronization/nanokernel/prj.conf | 1 +
samples/synchronization/nanokernel/src/Makefile | 1 +
samples/synchronization/nanokernel/src/main.c | 95 +
samples/synchronization/nanokernel/testcase.ini | 4 +
scripts/Makefile.toolchain.zephyr | 8 +-
scripts/checkpatch.pl | 150 +-
scripts/gen_idt/gen_idt.c | 76 +-
scripts/gen_offset_header/gen_offset_header.c | 20 +-
scripts/kconfig/confdata.c | 4 +
scripts/kconfig/symbol.c | 16 +-
scripts/kconfig/zconf.l | 156 ++
scripts/kconfig/zconf.lex.c_shipped | 153 ++
scripts/sanity_chk/arches/arc.ini | 6 +-
scripts/sanity_chk/arches/arm.ini | 4 +-
scripts/sanity_chk/arches/x86.ini | 5 +-
scripts/sanity_chk/sanity_last_release.csv | 1160 +++++------
scripts/sanitycheck | 155 +-
tests/benchmark/app_kernel/Makefile | 12 +
tests/benchmark/app_kernel/README.txt | 148 ++
tests/benchmark/app_kernel/prj.mdef | 49 +
tests/benchmark/app_kernel/prj_atom.conf | 13 +
tests/benchmark/app_kernel/prj_minuteia.conf | 6 +
tests/benchmark/app_kernel/src/Makefile | 7 +
tests/benchmark/app_kernel/src/config.h | 52 +
tests/benchmark/app_kernel/src/event_b.c | 176 ++
tests/benchmark/app_kernel/src/fifo_b.c | 99 +
tests/benchmark/app_kernel/src/fifo_r.c | 44 +
tests/benchmark/app_kernel/src/mailbox_b.c | 159 ++
tests/benchmark/app_kernel/src/mailbox_r.c | 105 +
tests/benchmark/app_kernel/src/master.c | 153 ++
tests/benchmark/app_kernel/src/master.h | 166 ++
tests/benchmark/app_kernel/src/memcfg.h | 25 +
tests/benchmark/app_kernel/src/memmap_b.c | 50 +
tests/benchmark/app_kernel/src/mempool_b.c | 49 +
tests/benchmark/app_kernel/src/mutex_b.c | 47 +
tests/benchmark/app_kernel/src/nop_b.c | 49 +
tests/benchmark/app_kernel/src/pipe_b.c | 251 +++
tests/benchmark/app_kernel/src/pipe_r.c | 150 ++
tests/benchmark/app_kernel/src/receiver.c | 62 +
tests/benchmark/app_kernel/src/receiver.h | 36 +
tests/benchmark/app_kernel/src/sema_b.c | 131 ++
tests/benchmark/app_kernel/src/sema_r.c | 75 +
tests/benchmark/app_kernel/testcase.ini | 6 +
tests/benchmark/boot_time/microkernel/Makefile | 14 +
tests/benchmark/boot_time/microkernel/README.txt | 68 +
.../benchmark/boot_time/microkernel/ia32/prj.conf | 6 +
.../microkernel/ia32/prj_expert_test.conf | 7 +
.../boot_time/microkernel/ia32_pci/prj.conf | 4 +
tests/benchmark/boot_time/microkernel/prj.mdef | 5 +
.../microkernel/quark_d2000/quark_d2000_prj.conf | 7 +
.../microkernel/quark_se/quark_se_prj.conf | 7 +
tests/benchmark/boot_time/microkernel/src/Makefile | 4 +
.../boot_time/microkernel/src/boot_time.c | 121 ++
tests/benchmark/boot_time/microkernel/testcase.ini | 4 +
tests/benchmark/boot_time/nanokernel/Makefile | 14 +
tests/benchmark/boot_time/nanokernel/README.txt | 66 +
tests/benchmark/boot_time/nanokernel/ia32/prj.conf | 6 +
.../boot_time/nanokernel/ia32/prj_expert_test.conf | 7 +
.../boot_time/nanokernel/ia32_pci/prj.conf | 4 +
.../nanokernel/quark_d2000/quark_d2000_prj.conf | 7 +
.../nanokernel/quark_se/quark_se_prj.conf | 7 +
tests/benchmark/boot_time/nanokernel/testcase.ini | 4 +
tests/benchmark/footprint/microkernel/Makefile | 21 +
tests/benchmark/footprint/microkernel/README.txt | 107 +
.../benchmark/footprint/microkernel/float/arm.conf | 15 +
.../benchmark/footprint/microkernel/float/x86.conf | 19 +
tests/benchmark/footprint/microkernel/max/arm.conf | 12 +
tests/benchmark/footprint/microkernel/max/x86.conf | 13 +
.../footprint/microkernel/micro_float.mdef | 37 +
.../benchmark/footprint/microkernel/micro_max.mdef | 37 +
.../benchmark/footprint/microkernel/micro_min.mdef | 2 +
.../benchmark/footprint/microkernel/micro_reg.mdef | 21 +
tests/benchmark/footprint/microkernel/min/arm.conf | 12 +
.../footprint/microkernel/min/galileo.conf | 22 +
tests/benchmark/footprint/microkernel/min/x86.conf | 16 +
tests/benchmark/footprint/microkernel/reg/arm.conf | 9 +
tests/benchmark/footprint/microkernel/reg/x86.conf | 8 +
tests/benchmark/footprint/microkernel/src/Makefile | 1 +
.../microkernel/src/microkernel_footprint.c | 175 ++
.../microkernel/src/test_asm_inline_gcc.h | 66 +
tests/benchmark/footprint/microkernel/testcase.ini | 24 +
tests/benchmark/footprint/nanokernel/Makefile | 20 +
tests/benchmark/footprint/nanokernel/README.txt | 101 +
.../benchmark/footprint/nanokernel/float/x86.conf | 8 +
tests/benchmark/footprint/nanokernel/max/arm.conf | 4 +
tests/benchmark/footprint/nanokernel/max/x86.conf | 4 +
tests/benchmark/footprint/nanokernel/min/arc.conf | 9 +
tests/benchmark/footprint/nanokernel/min/arm.conf | 8 +
.../footprint/nanokernel/min/galileo.conf | 17 +
.../footprint/nanokernel/min/quark_d2000.conf | 9 +
tests/benchmark/footprint/nanokernel/min/x86.conf | 11 +
tests/benchmark/footprint/nanokernel/reg/arm.conf | 5 +
tests/benchmark/footprint/nanokernel/reg/x86.conf | 4 +
tests/benchmark/footprint/nanokernel/src/Makefile | 1 +
.../nanokernel/src/nanokernel_footprint.c | 174 ++
.../footprint/nanokernel/src/test_asm_inline_gcc.h | 66 +
tests/benchmark/footprint/nanokernel/testcase.ini | 23 +
.../benchmark/latency_measure/microkernel/Makefile | 6 +
.../latency_measure/microkernel/README.txt | 87 +
.../benchmark/latency_measure/microkernel/prj.conf | 10 +
.../benchmark/latency_measure/microkernel/prj.mdef | 76 +
.../latency_measure/microkernel/src/Makefile | 15 +
.../latency_measure/microkernel/src/main.c | 128 ++
.../microkernel/src/micro_int_to_task.c | 91 +
.../microkernel/src/micro_int_to_task_evt.c | 90 +
.../microkernel/src/micro_sema_lock_release.c | 123 ++
.../microkernel/src/micro_task_switch_yield.c | 116 ++
.../microkernel/src/nano_ctx_switch.c | 124 ++
.../latency_measure/microkernel/src/nano_int.c | 85 +
.../microkernel/src/nano_int_lock_unlock.c | 66 +
.../microkernel/src/nano_int_to_fiber.c | 96 +
.../microkernel/src/nano_int_to_fiber_sem.c | 120 ++
.../microkernel/src/test_asm_inline_gcc.h | 36 +
.../latency_measure/microkernel/src/timestamp.h | 143 ++
.../latency_measure/microkernel/src/utils.c | 32 +
.../latency_measure/microkernel/src/utils.h | 99 +
.../latency_measure/microkernel/testcase.ini | 4 +
.../benchmark/latency_measure/nanokernel/Makefile | 6 +
.../latency_measure/nanokernel/README.txt | 62 +
.../benchmark/latency_measure/nanokernel/prj.conf | 7 +
.../latency_measure/nanokernel/testcase.ini | 4 +
tests/benchmark/object_footprint/Kconfig | 57 +
tests/benchmark/object_footprint/Makefile | 10 +
tests/benchmark/object_footprint/README.txt | 12 +
tests/benchmark/object_footprint/prj00.conf | 11 +
tests/benchmark/object_footprint/prj01.conf | 10 +
tests/benchmark/object_footprint/prj02.conf | 11 +
tests/benchmark/object_footprint/prj03.conf | 11 +
tests/benchmark/object_footprint/prj04.conf | 11 +
tests/benchmark/object_footprint/prj05.conf | 13 +
tests/benchmark/object_footprint/prj06.conf | 14 +
tests/benchmark/object_footprint/prj07.conf | 15 +
tests/benchmark/object_footprint/prj08.conf | 16 +
tests/benchmark/object_footprint/prj09.conf | 17 +
tests/benchmark/object_footprint/prj10.conf | 20 +
tests/benchmark/object_footprint/prj11.conf | 20 +
tests/benchmark/object_footprint/run.sh | 11 +
tests/benchmark/object_footprint/src/Makefile | 1 +
.../object_footprint/src/nanokernel_objects.c | 165 ++
.../object_footprint/src/test_asm_inline_gcc.h | 67 +
tests/benchmark/sys_kernel/microkernel/Makefile | 7 +
tests/benchmark/sys_kernel/microkernel/README.txt | 175 ++
tests/benchmark/sys_kernel/microkernel/prj.conf | 9 +
tests/benchmark/sys_kernel/microkernel/prj.mdef | 6 +
.../benchmark/sys_kernel/microkernel/testcase.ini | 4 +
tests/benchmark/sys_kernel/nanokernel/Makefile | 5 +
tests/benchmark/sys_kernel/nanokernel/README.txt | 175 ++
.../sys_kernel/nanokernel/prj_console.conf | 4 +
tests/benchmark/sys_kernel/nanokernel/src/Makefile | 8 +
tests/benchmark/sys_kernel/nanokernel/src/lifo.c | 255 +++
tests/benchmark/sys_kernel/nanokernel/src/mwfifo.c | 251 +++
tests/benchmark/sys_kernel/nanokernel/src/sema.c | 186 ++
tests/benchmark/sys_kernel/nanokernel/src/stack.c | 233 +++
.../sys_kernel/nanokernel/src/syskernel.c | 205 ++
.../sys_kernel/nanokernel/src/syskernel.h | 71 +
tests/benchmark/sys_kernel/nanokernel/testcase.ini | 4 +
tests/bluetooth/init/Makefile | 7 +
tests/bluetooth/init/prj.conf | 3 +
tests/bluetooth/init/prj.mdef | 5 +
tests/bluetooth/init/prj_h5.conf | 4 +
tests/bluetooth/init/src/Makefile | 1 +
tests/bluetooth/init/src/main.c | 40 +
tests/bluetooth/init/testcase.ini | 19 +
tests/bluetooth/shell/Makefile | 30 +
tests/bluetooth/shell/README | 7 +
tests/bluetooth/shell/prj.mdef | 5 +
tests/bluetooth/shell/prj_arm.conf | 14 +
tests/bluetooth/shell/prj_nble.conf | 7 +
tests/bluetooth/shell/prj_x86.conf | 14 +
tests/bluetooth/shell/src/Makefile | 3 +
tests/bluetooth/shell/src/main.c | 1538 +++++++++++++++
tests/bluetooth/shell/testcase.ini | 46 +
tests/bluetooth/test_bluetooth/Makefile | 6 +
tests/bluetooth/test_bluetooth/prj.conf | 8 +
tests/bluetooth/test_bluetooth/prj.mdef | 5 +
tests/bluetooth/test_bluetooth/src/Makefile | 3 +
tests/bluetooth/test_bluetooth/src/bluetooth.c | 73 +
tests/bluetooth/test_bluetooth/testcase.ini | 9 +
tests/bluetooth/tester/Makefile | 37 +
tests/bluetooth/tester/README | 2 +
tests/bluetooth/tester/btp_spec.txt | 1068 ++++++++++
tests/bluetooth/tester/prj.conf | 20 +
tests/bluetooth/tester/prj.mdef | 5 +
tests/bluetooth/tester/prj_nble.conf | 5 +
tests/bluetooth/tester/src/Makefile | 3 +
tests/bluetooth/tester/src/bttester.c | 233 +++
tests/bluetooth/tester/src/bttester.h | 536 +++++
tests/bluetooth/tester/src/gap.c | 560 ++++++
tests/bluetooth/tester/src/gatt.c | 1656 ++++++++++++++++
tests/bluetooth/tester/src/main.c | 32 +
tests/bluetooth/tester/testcase.ini | 12 +
tests/crypto/test_aes/Makefile | 6 +
tests/crypto/test_aes/README.txt | 48 +
tests/crypto/test_aes/prj.mdef | 5 +
tests/crypto/test_aes/prj_arm.conf | 3 +
tests/crypto/test_aes/prj_x86.conf | 3 +
tests/crypto/test_aes/src/Makefile | 2 +
tests/crypto/test_aes/src/test_aes.c | 2075 ++++++++++++++++++++
tests/crypto/test_aes/testcase.ini | 3 +
tests/crypto/test_cbc/Makefile | 6 +
tests/crypto/test_cbc/README.txt | 43 +
tests/crypto/test_cbc/prj.mdef | 5 +
tests/crypto/test_cbc/prj_arm.conf | 4 +
tests/crypto/test_cbc/prj_x86.conf | 4 +
tests/crypto/test_cbc/src/Makefile | 2 +
tests/crypto/test_cbc/src/test_cbc_mode.c | 177 ++
tests/crypto/test_cbc/testcase.ini | 4 +
tests/crypto/test_ccm_mode/Makefile | 6 +
tests/crypto/test_ccm_mode/README.txt | 60 +
tests/crypto/test_ccm_mode/prj.mdef | 5 +
tests/crypto/test_ccm_mode/prj_arm.conf | 4 +
tests/crypto/test_ccm_mode/prj_x86.conf | 4 +
tests/crypto/test_ccm_mode/src/Makefile | 2 +
tests/crypto/test_ccm_mode/src/test_ccm_mode.c | 509 +++++
tests/crypto/test_ccm_mode/testcase.ini | 4 +
tests/crypto/test_cmac_mode/Makefile | 6 +
tests/crypto/test_cmac_mode/README.txt | 51 +
tests/crypto/test_cmac_mode/prj.mdef | 5 +
tests/crypto/test_cmac_mode/prj_arm.conf | 4 +
tests/crypto/test_cmac_mode/prj_x86.conf | 4 +
tests/crypto/test_cmac_mode/src/Makefile | 2 +
tests/crypto/test_cmac_mode/src/test_cmac_mode.c | 309 +++
tests/crypto/test_cmac_mode/testcase.ini | 4 +
tests/crypto/test_ctr/Makefile | 6 +
tests/crypto/test_ctr/README.txt | 43 +
tests/crypto/test_ctr/prj.mdef | 5 +
tests/crypto/test_ctr/prj_arm.conf | 4 +
tests/crypto/test_ctr/prj_x86.conf | 4 +
tests/crypto/test_ctr/src/Makefile | 2 +
tests/crypto/test_ctr/src/test_ctr_mode.c | 141 ++
tests/crypto/test_ctr/testcase.ini | 4 +
tests/crypto/test_hmac/Makefile | 6 +
tests/crypto/test_hmac/README.txt | 57 +
tests/crypto/test_hmac/pjr_arm.conf | 4 +
tests/crypto/test_hmac/prj.mdef | 5 +
tests/crypto/test_hmac/prj_arm.conf | 4 +
tests/crypto/test_hmac/prj_x86.conf | 4 +
tests/crypto/test_hmac/src/Makefile | 2 +
tests/crypto/test_hmac/src/test_hmac.c | 358 ++++
tests/crypto/test_hmac/testcase.ini | 5 +
tests/crypto/test_prng/Makefile | 6 +
tests/crypto/test_prng/README.txt | 46 +
tests/crypto/test_prng/prj.mdef | 5 +
tests/crypto/test_prng/prj_arm.conf | 5 +
tests/crypto/test_prng/prj_x86.conf | 5 +
tests/crypto/test_prng/src/Makefile | 3 +
tests/crypto/test_prng/src/test_hmac_prng.c | 113 ++
tests/crypto/test_prng/testcase.ini | 4 +
tests/crypto/test_sha256/Makefile | 6 +
tests/crypto/test_sha256/README.txt | 79 +
tests/crypto/test_sha256/prj.mdef | 5 +
tests/crypto/test_sha256/prj_arm.conf | 3 +
tests/crypto/test_sha256/prj_x86.conf | 3 +
tests/crypto/test_sha256/src/Makefile | 3 +
tests/crypto/test_sha256/src/test_sha256.c | 510 +++++
tests/crypto/test_sha256/testcase.ini | 5 +
tests/include/tc_nano_timeout_common.h | 68 +
tests/include/tc_util.h | 70 +
tests/include/test_utils.h | 76 +
tests/include/util_test_common.h | 30 +
tests/kernel/test_arm_m3_irq_vector_table/Makefile | 5 +
.../kernel/test_arm_m3_irq_vector_table/README.txt | 40 +
tests/kernel/test_arm_m3_irq_vector_table/prj.conf | 4 +
.../test_arm_m3_irq_vector_table/src/Makefile | 3 +
.../kernel/test_arm_m3_irq_vector_table/src/main.c | 122 ++
.../test_arm_m3_irq_vector_table/testcase.ini | 4 +
tests/kernel/test_atomic/Makefile | 4 +
tests/kernel/test_atomic/README.txt | 55 +
tests/kernel/test_atomic/src/Makefile | 3 +
tests/kernel/test_atomic/src/atomic.c | 164 ++
tests/kernel/test_atomic/testcase.ini | 2 +
tests/kernel/test_build/Makefile | 6 +
tests/kernel/test_build/debug.conf | 2 +
tests/kernel/test_build/newlib.conf | 3 +
tests/kernel/test_build/testcase.ini | 13 +
tests/kernel/test_context/Makefile | 5 +
tests/kernel/test_context/README.txt | 80 +
tests/kernel/test_context/prj_arm.conf | 3 +
tests/kernel/test_context/prj_x86.conf | 7 +
tests/kernel/test_context/src/Makefile | 4 +
tests/kernel/test_context/src/README | 51 +
tests/kernel/test_context/src/context.c | 935 +++++++++
tests/kernel/test_context/testcase.ini | 5 +
tests/kernel/test_critical/Makefile | 6 +
tests/kernel/test_critical/README.txt | 51 +
tests/kernel/test_critical/prj.mdef | 11 +
tests/kernel/test_critical/prj_arm.conf | 2 +
tests/kernel/test_critical/prj_x86.conf | 6 +
tests/kernel/test_critical/src/Makefile | 3 +
tests/kernel/test_critical/src/critical.c | 164 ++
tests/kernel/test_critical/testcase.ini | 3 +
tests/kernel/test_errno/Makefile | 6 +
tests/kernel/test_errno/README.txt | 43 +
tests/kernel/test_errno/prj.conf | 1 +
tests/kernel/test_errno/src/Makefile | 3 +
tests/kernel/test_errno/src/main.c | 96 +
tests/kernel/test_errno/testcase.ini | 3 +
tests/kernel/test_events/Makefile | 7 +
tests/kernel/test_events/README.txt | 45 +
tests/kernel/test_events/prj.mdef | 15 +
tests/kernel/test_events/prj_arm.conf | 1 +
tests/kernel/test_events/prj_x86.conf | 5 +
tests/kernel/test_events/src/Makefile | 3 +
tests/kernel/test_events/src/events.c | 587 ++++++
tests/kernel/test_events/src/test_fiber.c | 80 +
tests/kernel/test_events/testcase.ini | 3 +
tests/kernel/test_fifo/Makefile | 6 +
tests/kernel/test_fifo/README.microkernel.txt | 86 +
tests/kernel/test_fifo/README.nanokernel.txt | 121 ++
tests/kernel/test_fifo/prj.conf | 8 +
tests/kernel/test_fifo/prj.mdef | 15 +
tests/kernel/test_fifo/src/Makefile | 5 +
tests/kernel/test_fifo/src/fifo_timeout.c | 498 +++++
tests/kernel/test_fifo/src/micro_fifo.c | 628 ++++++
tests/kernel/test_fifo/src/nano_fifo.c | 713 +++++++
tests/kernel/test_fifo/testcase.ini | 11 +
tests/kernel/test_fifo_priv/Makefile | 9 +
tests/kernel/test_fifo_priv/README.txt | 87 +
tests/kernel/test_fifo_priv/prj.mdef | 21 +
tests/kernel/test_fifo_priv/prj_arm.conf | 1 +
tests/kernel/test_fifo_priv/prj_x86.conf | 4 +
tests/kernel/test_fifo_priv/testcase.ini | 3 +
tests/kernel/test_fp_sharing/microkernel/Makefile | 6 +
.../kernel/test_fp_sharing/microkernel/README.txt | 53 +
tests/kernel/test_fp_sharing/microkernel/prj.mdef | 8 +
.../test_fp_sharing/microkernel/prj_x86.conf | 11 +
.../test_fp_sharing/microkernel/src/Makefile | 4 +
.../microkernel/src/float_context.h | 99 +
.../microkernel/src/float_regs_x86_gcc.h | 210 ++
.../kernel/test_fp_sharing/microkernel/src/main.c | 391 ++++
tests/kernel/test_fp_sharing/microkernel/src/pi.c | 166 ++
tests/kernel/test_fp_sharing/nanokernel/Makefile | 6 +
tests/kernel/test_fp_sharing/nanokernel/README.txt | 44 +
.../kernel/test_fp_sharing/nanokernel/prj_x86.conf | 9 +
tests/kernel/test_ipm/Makefile | 5 +
tests/kernel/test_ipm/prj.conf | 5 +
tests/kernel/test_ipm/src/Makefile | 4 +
tests/kernel/test_ipm/src/ipm_dummy.c | 144 ++
tests/kernel/test_ipm/src/ipm_dummy.h | 42 +
tests/kernel/test_ipm/src/test_ipm.c | 120 ++
tests/kernel/test_ipm/testcase.ini | 2 +
tests/kernel/test_libs/Makefile | 6 +
tests/kernel/test_libs/README.txt | 49 +
tests/kernel/test_libs/prj.mdef | 11 +
tests/kernel/test_libs/prj_arm.conf | 1 +
tests/kernel/test_libs/prj_x86.conf | 4 +
tests/kernel/test_libs/src/Makefile | 4 +
tests/kernel/test_libs/src/libraries.c | 410 ++++
tests/kernel/test_libs/src/main.c | 104 +
tests/kernel/test_libs/testcase.ini | 3 +
tests/kernel/test_lifo/Makefile | 5 +
tests/kernel/test_lifo/README.txt | 85 +
tests/kernel/test_lifo/prj.conf | 8 +
tests/kernel/test_lifo/src/Makefile | 4 +
tests/kernel/test_lifo/src/README | 35 +
tests/kernel/test_lifo/src/lifo.c | 1087 ++++++++++
tests/kernel/test_lifo/testcase.ini | 4 +
tests/kernel/test_mail/Makefile | 6 +
tests/kernel/test_mail/README.txt | 61 +
tests/kernel/test_mail/prj.mdef | 24 +
tests/kernel/test_mail/prj_arm.conf | 1 +
tests/kernel/test_mail/prj_x86.conf | 4 +
tests/kernel/test_mail/src/Makefile | 3 +
tests/kernel/test_mail/src/mail.c | 682 +++++++
tests/kernel/test_mail/src/main.c | 135 ++
tests/kernel/test_mail/testcase.ini | 3 +
tests/kernel/test_mail_priv/Makefile | 10 +
tests/kernel/test_mail_priv/README.txt | 62 +
tests/kernel/test_mail_priv/prj.mdef | 30 +
tests/kernel/test_mail_priv/prj_arm.conf | 1 +
tests/kernel/test_mail_priv/prj_x86.conf | 4 +
tests/kernel/test_mail_priv/testcase.ini | 3 +
tests/kernel/test_map/Makefile | 6 +
tests/kernel/test_map/README.txt | 80 +
tests/kernel/test_map/prj.mdef | 15 +
tests/kernel/test_map/prj_arm.conf | 1 +
tests/kernel/test_map/prj_x86.conf | 4 +
tests/kernel/test_map/src/Makefile | 3 +
tests/kernel/test_map/src/map.c | 397 ++++
tests/kernel/test_map/testcase.ini | 3 +
tests/kernel/test_map_priv/Makefile | 10 +
tests/kernel/test_map_priv/README.txt | 81 +
tests/kernel/test_map_priv/prj.mdef | 21 +
tests/kernel/test_map_priv/prj_arm.conf | 1 +
tests/kernel/test_map_priv/prj_x86.conf | 4 +
tests/kernel/test_map_priv/testcase.ini | 3 +
tests/kernel/test_mem_safe/Makefile | 5 +
tests/kernel/test_mem_safe/README.txt | 96 +
tests/kernel/test_mem_safe/prj.conf | 3 +
tests/kernel/test_mem_safe/src/Makefile | 4 +
tests/kernel/test_mem_safe/src/asm_arm.S | 0
tests/kernel/test_mem_safe/src/asm_x86.S | 30 +
tests/kernel/test_mem_safe/src/main.c | 412 ++++
tests/kernel/test_mem_safe/testcase.ini | 4 +
tests/kernel/test_mutex/Makefile | 6 +
tests/kernel/test_mutex/README.txt | 39 +
tests/kernel/test_mutex/prj.mdef | 19 +
tests/kernel/test_mutex/prj_arm.conf | 2 +
tests/kernel/test_mutex/prj_x86.conf | 6 +
tests/kernel/test_mutex/src/Makefile | 3 +
tests/kernel/test_mutex/src/mutex.c | 385 ++++
tests/kernel/test_mutex/src/task50.c | 63 +
tests/kernel/test_mutex/testcase.ini | 3 +
tests/kernel/test_pipe/Makefile | 6 +
tests/kernel/test_pipe/README.txt | 42 +
tests/kernel/test_pipe/prj.mdef | 19 +
tests/kernel/test_pipe/prj_arm.conf | 1 +
tests/kernel/test_pipe/prj_x86.conf | 4 +
tests/kernel/test_pipe/src/Makefile | 3 +
tests/kernel/test_pipe/src/main.c | 128 ++
tests/kernel/test_pipe/src/pipe.c | 1046 ++++++++++
tests/kernel/test_pipe/testcase.ini | 3 +
tests/kernel/test_pipe_priv/Makefile | 10 +
tests/kernel/test_pipe_priv/README.txt | 43 +
tests/kernel/test_pipe_priv/prj.mdef | 25 +
tests/kernel/test_pipe_priv/prj_arm.conf | 1 +
tests/kernel/test_pipe_priv/prj_x86.conf | 4 +
tests/kernel/test_pipe_priv/testcase.ini | 3 +
tests/kernel/test_pool/Makefile | 6 +
tests/kernel/test_pool/README.txt | 41 +
tests/kernel/test_pool/prj.mdef | 20 +
tests/kernel/test_pool/prj_arm.conf | 1 +
tests/kernel/test_pool/prj_x86.conf | 4 +
tests/kernel/test_pool/src/Makefile | 3 +
tests/kernel/test_pool/src/pool.c | 480 +++++
tests/kernel/test_pool/testcase.ini | 3 +
tests/kernel/test_rand32/Makefile | 23 +
tests/kernel/test_rand32/README.txt | 30 +
tests/kernel/test_rand32/prj.conf | 5 +
tests/kernel/test_rand32/prj.mdef | 6 +
tests/kernel/test_rand32/src/Makefile | 3 +
tests/kernel/test_rand32/src/test-rand32.c | 81 +
tests/kernel/test_rand32/testcase.ini | 3 +
tests/kernel/test_ring_buf/Makefile | 5 +
tests/kernel/test_ring_buf/prj.conf | 2 +
tests/kernel/test_ring_buf/src/Makefile | 4 +
tests/kernel/test_ring_buf/src/test_ring_buf.c | 107 +
tests/kernel/test_ring_buf/testcase.ini | 3 +
tests/kernel/test_sema/microkernel/Makefile | 6 +
tests/kernel/test_sema/microkernel/README.txt | 42 +
tests/kernel/test_sema/microkernel/prj.mdef | 29 +
tests/kernel/test_sema/microkernel/prj_arm.conf | 1 +
tests/kernel/test_sema/microkernel/prj_x86.conf | 5 +
tests/kernel/test_sema/microkernel/src/Makefile | 3 +
tests/kernel/test_sema/microkernel/src/README | 24 +
tests/kernel/test_sema/microkernel/src/main.c | 239 +++
tests/kernel/test_sema/microkernel/src/sema.c | 657 +++++++
.../kernel/test_sema/microkernel/src/test_fiber.c | 84 +
tests/kernel/test_sema/microkernel/testcase.ini | 3 +
tests/kernel/test_sema/nanokernel/Makefile | 5 +
tests/kernel/test_sema/nanokernel/README.txt | 86 +
tests/kernel/test_sema/nanokernel/prj.conf | 6 +
tests/kernel/test_sema/nanokernel/src/Makefile | 4 +
tests/kernel/test_sema/nanokernel/src/README | 33 +
tests/kernel/test_sema/nanokernel/src/sema.c | 976 +++++++++
tests/kernel/test_sema/nanokernel/testcase.ini | 4 +
tests/kernel/test_sema_priv/Makefile | 10 +
tests/kernel/test_sema_priv/README.txt | 44 +
tests/kernel/test_sema_priv/prj.mdef | 36 +
tests/kernel/test_sema_priv/prj_arm.conf | 1 +
tests/kernel/test_sema_priv/prj_x86.conf | 5 +
tests/kernel/test_sema_priv/testcase.ini | 3 +
tests/kernel/test_sleep/Makefile | 5 +
tests/kernel/test_sleep/README.txt | 45 +
tests/kernel/test_sleep/prj.conf | 6 +
tests/kernel/test_sleep/src/Makefile | 3 +
tests/kernel/test_sleep/src/sleep.c | 205 ++
tests/kernel/test_sleep/testcase.ini | 2 +
tests/kernel/test_sprintf/microkernel/Makefile | 6 +
tests/kernel/test_sprintf/microkernel/README.txt | 45 +
tests/kernel/test_sprintf/microkernel/prj.mdef | 5 +
tests/kernel/test_sprintf/microkernel/prj_arm.conf | 2 +
tests/kernel/test_sprintf/microkernel/prj_x86.conf | 8 +
tests/kernel/test_sprintf/microkernel/src/Makefile | 3 +
.../test_sprintf/microkernel/src/test_sprintf.c | 756 +++++++
tests/kernel/test_sprintf/microkernel/testcase.ini | 4 +
tests/kernel/test_stack/nanokernel/Makefile | 5 +
tests/kernel/test_stack/nanokernel/README.txt | 90 +
tests/kernel/test_stack/nanokernel/prj.conf | 5 +
tests/kernel/test_stack/nanokernel/src/Makefile | 3 +
tests/kernel/test_stack/nanokernel/src/stack.c | 576 ++++++
tests/kernel/test_stack/nanokernel/testcase.ini | 2 +
tests/kernel/test_stackprot/microkernel/Makefile | 6 +
tests/kernel/test_stackprot/microkernel/README.txt | 52 +
tests/kernel/test_stackprot/microkernel/prj.mdef | 6 +
.../kernel/test_stackprot/microkernel/prj_arm.conf | 6 +
.../kernel/test_stackprot/microkernel/prj_x86.conf | 5 +
.../kernel/test_stackprot/microkernel/src/Makefile | 3 +
.../test_stackprot/microkernel/src/stackprot.c | 167 ++
.../kernel/test_stackprot/microkernel/testcase.ini | 3 +
tests/kernel/test_stackprot/nanokernel/Makefile | 6 +
tests/kernel/test_stackprot/nanokernel/README.txt | 50 +
.../kernel/test_stackprot/nanokernel/prj_arc.conf | 5 +
.../kernel/test_stackprot/nanokernel/prj_arm.conf | 6 +
.../kernel/test_stackprot/nanokernel/prj_x86.conf | 6 +
.../kernel/test_stackprot/nanokernel/testcase.ini | 4 +
tests/kernel/test_static_idt/microkernel/Makefile | 6 +
.../kernel/test_static_idt/microkernel/README.txt | 45 +
tests/kernel/test_static_idt/microkernel/prj.mdef | 6 +
.../test_static_idt/microkernel/prj_x86.conf | 5 +
.../test_static_idt/microkernel/src/Makefile | 3 +
.../test_static_idt/microkernel/src/static_idt.c | 265 +++
.../microkernel/src/test_asm_inline_gcc.h | 29 +
.../test_static_idt/microkernel/src/test_stubs.S | 76 +
.../test_static_idt/microkernel/testcase.ini | 4 +
tests/kernel/test_static_idt/nanokernel/Makefile | 6 +
tests/kernel/test_static_idt/nanokernel/README.txt | 46 +
.../kernel/test_static_idt/nanokernel/prj_x86.conf | 5 +
.../kernel/test_static_idt/nanokernel/testcase.ini | 4 +
tests/kernel/test_task/Makefile | 6 +
tests/kernel/test_task/README.txt | 45 +
tests/kernel/test_task/prj.mdef | 15 +
tests/kernel/test_task/prj_arm.conf | 3 +
tests/kernel/test_task/prj_x86.conf | 7 +
tests/kernel/test_task/src/Makefile | 3 +
tests/kernel/test_task/src/task.c | 527 +++++
tests/kernel/test_task/testcase.ini | 3 +
tests/kernel/test_task_irq/Makefile | 6 +
tests/kernel/test_task_irq/README.txt | 58 +
tests/kernel/test_task_irq/prj.mdef | 14 +
tests/kernel/test_task_irq/prj_arm.conf | 6 +
tests/kernel/test_task_irq/prj_x86.conf | 5 +
tests/kernel/test_task_irq/src/Makefile | 3 +
tests/kernel/test_task_irq/src/main.c | 147 ++
tests/kernel/test_task_irq/src/raise_int.c | 1406 +++++++++++++
tests/kernel/test_task_irq/src/test_device.c | 185 ++
tests/kernel/test_task_irq/testcase.ini | 3 +
tests/kernel/test_task_priv/Makefile | 10 +
tests/kernel/test_task_priv/README.txt | 46 +
tests/kernel/test_task_priv/prj.mdef | 17 +
tests/kernel/test_task_priv/prj_arm.conf | 2 +
tests/kernel/test_task_priv/prj_x86.conf | 7 +
tests/kernel/test_task_priv/testcase.ini | 3 +
tests/kernel/test_tickless/microkernel/Makefile | 6 +
tests/kernel/test_tickless/microkernel/README.txt | 55 +
tests/kernel/test_tickless/microkernel/prj.mdef | 5 +
.../kernel/test_tickless/microkernel/prj_arm.conf | 3 +
.../kernel/test_tickless/microkernel/prj_x86.conf | 7 +
.../kernel/test_tickless/microkernel/src/Makefile | 6 +
.../test_tickless/microkernel/src/test_tickless.c | 191 ++
.../test_tickless/microkernel/src/timestamps.c | 317 +++
.../kernel/test_tickless/microkernel/testcase.ini | 3 +
tests/kernel/test_timer/microkernel/Makefile | 6 +
tests/kernel/test_timer/microkernel/README.txt | 76 +
tests/kernel/test_timer/microkernel/prj.mdef | 11 +
tests/kernel/test_timer/microkernel/prj_arm.conf | 6 +
tests/kernel/test_timer/microkernel/prj_x86.conf | 9 +
tests/kernel/test_timer/microkernel/src/Makefile | 4 +
tests/kernel/test_timer/microkernel/src/timer.c | 371 ++++
tests/kernel/test_timer/microkernel/testcase.ini | 3 +
tests/kernel/test_timer/nanokernel/Makefile | 5 +
tests/kernel/test_timer/nanokernel/README.txt | 50 +
tests/kernel/test_timer/nanokernel/prj_arc.conf | 1 +
tests/kernel/test_timer/nanokernel/prj_arm.conf | 1 +
tests/kernel/test_timer/nanokernel/prj_x86.conf | 4 +
tests/kernel/test_timer/nanokernel/src/Makefile | 4 +
tests/kernel/test_timer/nanokernel/src/README | 42 +
tests/kernel/test_timer/nanokernel/src/timer.c | 565 ++++++
tests/kernel/test_timer/nanokernel/testcase.ini | 3 +
tests/kernel/test_xip/microkernel/Makefile | 6 +
tests/kernel/test_xip/microkernel/README.txt | 37 +
tests/kernel/test_xip/microkernel/prj.conf | 2 +
tests/kernel/test_xip/microkernel/prj.mdef | 5 +
tests/kernel/test_xip/microkernel/src/Makefile | 3 +
tests/kernel/test_xip/microkernel/src/test.h | 35 +
tests/kernel/test_xip/microkernel/src/test_xip.c | 76 +
.../test_xip/microkernel/src/test_xip_helper.c | 33 +
tests/kernel/test_xip/microkernel/testcase.ini | 3 +
tests/kernel/test_xip/nanokernel/Makefile | 6 +
tests/kernel/test_xip/nanokernel/README.txt | 37 +
tests/kernel/test_xip/nanokernel/prj_arc.conf | 2 +
tests/kernel/test_xip/nanokernel/prj_arm.conf | 2 +
tests/kernel/test_xip/nanokernel/prj_x86.conf | 2 +
tests/kernel/test_xip/nanokernel/testcase.ini | 3 +
tests/net/buf/Makefile | 6 +
tests/net/buf/prj.mdef | 5 +
tests/net/buf/prj_x86.conf | 2 +
tests/net/buf/src/Makefile | 1 +
tests/net/buf/src/main.c | 89 +
tests/net/buf/testcase.ini | 6 +
zephyr-env.sh | 44 +-
1944 files changed, 59210 insertions(+), 53124 deletions(-)


Newbie wants to contribute

Himanshu Maurya <himanshumaurya2214225@...>
 

Hello zephyr team!!!

I am Himanshu, I am junior undergrad at Indian Institute of Information
Technology Design & Manufacturing Jabalpur .
I have been looking for an opportunity for working in an OS project and
Zephyr give is the perfect opportunity.
Here's my profile for reference: in.linkedin.com/in/lordzuko
<https://t.co/1wOpFLZe0u>

Can you tell me where I can contribute to the project or some
prerequisites.
Any help would be appreciated.

Hope to hear from you!!!

Cheers!!!!
Himanshu
(lordzuko )


Re: RFC: Counter driver API

Tomasz Bursztyka
 

Hi Andre,

/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Looks like we are moving to Posix error codes, so it would be wise to do
it here as
well. (better now than after the API is upstream). Apply that to all.

*/
int counter_start(struct device *dev);

/**
* @brief Stop counter device.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev);

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
Set an alarm callback. If the counter was not started yet, this will do
it automatically
(no need to call counter_start()).

What about (let me know if I am wrong, hw feature wise) resetting an alarm?
Currently, it set set it, and nothing cannot stop it.

So we may want a counter_unset_alarm() ?

Now question is: would it be enough to have 1 alarm set a time, or could
it be
interesting to link alarms? (so different subsystem could use set an alarm)

*
* @brief Set an alarm callback.
* @param dev Pointer to the device structure for the driver instance.
* @param callback Pointer to the callback function.
* @param count Number of counter ticks.
*
* @retval DEV_OK If successful.
* @retval DEV_NO_SUPPORT if the device doesn't support interrupt (e.g.
* free running counters).
*/
int counter_set_alarm(struct device *dev, void (*callback)(void *data), int count);
Sound fine, but please create a typedef for the callback, a bit more
developed:

typedef void (*counter_callback_t)(struct device *dev, void *user_data)

Then:
- make count as an uint32_t
- and add a void *user_data pointer as well.

Tomasz


[RFC] GPIO API changes

Tomasz Bursztyka
 

Hi,

I would like to propose some changes to the public GPIO API.
Addressing major 2 issues which I faced while writing some code using
the API. And an third one, related to the consistency of the API.

API issues:
==========

1) the callback might need to know about the context: Let's say you
have a driver which sets a gpio callback. As soon as there is 2
instances of this driver, it won't be able to tell which instance
does that callback call belongs to (unless keeping book about which
gpio port/pin relates to which inner instance which is ugly)

2) 2+ different sub-system might need to set a callback: One
sub-system might be interested to get notified when pin X generated
an interrupt, when another would be interested by pin Y.

3) Currently, you can set either a callback for the whole port or
per-pin. The major difference is found in how callback is called:

-> port callback: the pin parameter of the callback is a bitfield,
each bit telling which pin generated and int.

-> pin callback: the pin parameter is the pin number and not anymore
a bit in a bitfield.


API changes:
===========

1) Let's add a user data pointer parameter to the callback:

typedef void (*gpio_callback_t)(struct device *port,
uint32_t pin,
void *user_data);

gpio_set_callback() would then require a void *user_data parameter as
well.


2) The callback would not be only a function, but a structure in order
to be able to manage a simple linked-list of callbacks.

Johan had a good input on that one, as he and bt team have done that
in the BT stack. Instead of a function pointer you would pass a
pointer of:

struct gpio_callback {
void (*func)(struct device *port, uint32_t pin, void *user_data);
void *user_data;

struct gpio_callback *_next;
}

This avoid to manage any memory slots in the driver. All would be
statically allowed. Also, being a generic list, the code could be
centralized in a private header in drivers/gpio thus we would not have
to re-implement such management in every driver.

3) I would like to normalize that: uint32_t pin would becomes uint32_t
pins and it would be always a bitfield.

Then instead of:
-> port cb: if (pin & BIT(the_pin_to_look_up)) { ... }
and
-> pin cb: if (pin == the_pin_to_look_up) { ... }

We would end up with a unique way of handling such parameter in the
callback:

if (pin & BIT(the_pin_to_look_up)) { ... }


Another idea:
============

Having multiple callback, I see one issue: it's up to the callback to
filter out which pins it's interested in. I mean, when setting a
callback nothing tells which pins it's meant for. Once you enabled pin
X, Y or Z to generate interrupts, all callbacks will be called
whatever pin is generating an interrupt.

If you have a callback interested by pin X and Y but not Z, it will be
called for the 3 of them.

It's not a big issue on the callback side since it will most likely
filter on X or Y this way:

if (pins & BIT(pin_X) {
...
} else if (pins & BIT(pin_y)) {
...
}

So we could add a pin mask in the struct gpio_callback: uint32_t
pin_mask.

That one would be used in gpio driver ISR handler to filter which
callback is relevant to call. I see 2 advantages:

- less callback calls, only relevant ones (gpio int are then handled
in a quicker way also)
- it would be a tiny bit more simple to filter out pins in the
callback: instead of the last "else if", you would just get a "else".
It's not much but still.

The drawback is it bloats a bit more the struct gpio_callback.

However, on complex hw setup, with different sub-system being
interested by the same gpio port and different pins, this could make
thing performing better. The less we stay in an ISR context, the
better.

From API functions point of view, I want to keep most of it as it is,
only parameters will change a bit. For instance I still want a
unique gpio_set_callback() function. I still think it's relevant to
keep gpio_pin_<enable/disable>_callback() no matter what pins are the
callback interested in. Same for gpi_port_enable_callback().

Finally, only the gpio_callback_t type will change. I still have to
figure out how to keep the old API behavior, probably through Kconfig
option. It would be either/or, not both. Or should it enable old
behavior always?

Tomasz


Re: [RFC] GPIO API changes

Johan Hedberg
 

Hi Tomasz,

On Thu, Mar 03, 2016, Tomasz Bursztyka wrote:
1) Let's add a user data pointer parameter to the callback:

typedef void (*gpio_callback_t)(struct device *port,
uint32_t pin,
void *user_data);

gpio_set_callback() would then require a void *user_data parameter as
well.


2) The callback would not be only a function, but a structure in order
to be able to manage a simple linked-list of callbacks.

Johan had a good input on that one, as he and bt team have done that
in the BT stack. Instead of a function pointer you would pass a
pointer of:

struct gpio_callback {
void (*func)(struct device *port, uint32_t pin, void *user_data);
void *user_data;

struct gpio_callback *_next;
}

This avoid to manage any memory slots in the driver. All would be
statically allowed. Also, being a generic list, the code could be
centralized in a private header in drivers/gpio thus we would not have
to re-implement such management in every driver.
A perhaps slightly more compact solution (and a pattern I see a log e.g.
in Linux) is to take advantage of CONTAINER_OF. You'd first drop
user_data from the gpio_callback and pass the original struct to the
callback:

struct gpio_callback {
void (*func)(struct device *port, struct gpio_callback *cb, uint32_t pin);
struct gpio_callback *_next;
}

Then users of the API could just use this struct directly, or if they
need "user data" they can define their own structs that embed the gpio
one:

struct my_struct {
...
struct gpio_callback cb;
...
};

void my_func(struct device *port, struct gpio_callback *cb, uint32_t pins)
{
struct my_struct *data = CONTAINER_OF(cb, struct my_struct, cb);
}

{
struct my_struct s;

GPIO_INIT_CB(&s.cb, my_func);

gpio_set_callback(port, &s.cb);
}

Johan


Re: [RFC] GPIO API changes

Tomasz Bursztyka
 

Hi Johan,

1) Let's add a user data pointer parameter to the callback:

typedef void (*gpio_callback_t)(struct device *port,
uint32_t pin,
void *user_data);

gpio_set_callback() would then require a void *user_data parameter as
well.


2) The callback would not be only a function, but a structure in order
to be able to manage a simple linked-list of callbacks.

Johan had a good input on that one, as he and bt team have done that
in the BT stack. Instead of a function pointer you would pass a
pointer of:

struct gpio_callback {
void (*func)(struct device *port, uint32_t pin, void *user_data);
void *user_data;

struct gpio_callback *_next;
}

This avoid to manage any memory slots in the driver. All would be
statically allowed. Also, being a generic list, the code could be
centralized in a private header in drivers/gpio thus we would not have
to re-implement such management in every driver.
A perhaps slightly more compact solution (and a pattern I see a log e.g.
in Linux) is to take advantage of CONTAINER_OF. You'd first drop
user_data from the gpio_callback and pass the original struct to the
callback:

struct gpio_callback {
void (*func)(struct device *port, struct gpio_callback *cb, uint32_t pin);
struct gpio_callback *_next;
}

Then users of the API could just use this struct directly, or if they
need "user data" they can define their own structs that embed the gpio
one:

struct my_struct {
...
struct gpio_callback cb;
...
};

void my_func(struct device *port, struct gpio_callback *cb, uint32_t pins)
{
struct my_struct *data = CONTAINER_OF(cb, struct my_struct, cb);
}

{
struct my_struct s;

GPIO_INIT_CB(&s.cb, my_func);

gpio_set_callback(port, &s.cb);
}
I fully agree on that. It saves a pointer in case the user does not want
to access any private data,
and thus leaves space for adding pin mask in the struct.

Tomasz


Re: RFC: Counter driver API

Jesus Sanchez-Palencia <jesus.sanchez-palencia@...>
 

Aloha,


On Thu, 3 Mar 2016 09:24:12 +0100
Tomasz Bursztyka <tomasz.bursztyka(a)linux.intel.com> wrote:

Hi Andre,

/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Probably better here to:
@retval DEV_NO_SUPPORT if the device doesn't support starting the
counter (e.g. free running counters).



Looks like we are moving to Posix error codes, so it would be wise to do
it here as
well. (better now than after the API is upstream). Apply that to all.
It's still not clear if the change will go straight to Posix errors or
if the transition through DEV_* will happen first. We can't mix both.


*/
int counter_start(struct device *dev);

/**
* @brief Stop counter device.
* @param dev Pointer to the device structure for the driver instance.
*
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Probably better here to:
@retval DEV_NO_SUPPORT if the device doesn't support stopping the
counter (e.g. free running counters).

*/
int counter_stop(struct device *dev);

/**
* @brief Read current counter value
* @param dev Pointer to the device structure for the driver instance.
*
* @return 32-bit value
*/
uint32_t counter_read(struct device *dev);

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
Set an alarm callback. If the counter was not started yet, this will do
it automatically
(no need to call counter_start()).

In general having an API that does 2 things is not a good idea.
An API called 'counter_set_alarm' should do only that, IMO. I'd rather have
2 API calls for that (set and start), but if we really want it to do both, then maybe
better calling it counter_init_alarm(..., int count); ?!


thanks,
jesus



What about (let me know if I am wrong, hw feature wise) resetting an alarm?
Currently, it set set it, and nothing cannot stop it.

So we may want a counter_unset_alarm() ?

Now question is: would it be enough to have 1 alarm set a time, or could
it be
interesting to link alarms? (so different subsystem could use set an alarm)

*
* @brief Set an alarm callback.
* @param dev Pointer to the device structure for the driver instance.
* @param callback Pointer to the callback function.
* @param count Number of counter ticks.
*
* @retval DEV_OK If successful.
* @retval DEV_NO_SUPPORT if the device doesn't support interrupt (e.g.
* free running counters).
*/
int counter_set_alarm(struct device *dev, void (*callback)(void *data), int count);
Sound fine, but please create a typedef for the callback, a bit more
developed:

typedef void (*counter_callback_t)(struct device *dev, void *user_data)

Then:
- make count as an uint32_t
- and add a void *user_data pointer as well.

Tomasz


Re: RFC: Counter driver API

Andre Guedes <andre.guedes@...>
 

Hi Tomasz,

Quoting Tomasz Bursztyka (2016-03-03 05:24:12)
/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Looks like we are moving to Posix error codes, so it would be wise to do
it here as
well. (better now than after the API is upstream). Apply that to all.
Yes, we'll move to errno codes any time soon. I'd prefer we go with the
current error code convention (DEV_*) at the moment and fix all drivers
at once in the 'errno patchset'.

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
Set an alarm callback. If the counter was not started yet, this will do
it automatically
(no need to call counter_start()).
This is a better comment.

What about (let me know if I am wrong, hw feature wise) resetting an alarm?
Currently, it set set it, and nothing cannot stop it.

So we may want a counter_unset_alarm() ?
API-wise, I think it makes sense we have the counter_unset_alarm. I'm just
wondering if the counter_stop API does cover the use case. I mean, counter_stop
stops the counter so the alarm won't be fired.

Now question is: would it be enough to have 1 alarm set a time, or could
it be
interesting to link alarms? (so different subsystem could use set an alarm)
ATM, I'd say we should go with one alarm set a time. For such functionality
you described, I think the user probably wants to use a system-wide timer,
such as the system timer, instead. Bare in mind that this is a driver API
and some platforms may not have any counter available.

*
* @brief Set an alarm callback.
* @param dev Pointer to the device structure for the driver instance.
* @param callback Pointer to the callback function.
* @param count Number of counter ticks.
*
* @retval DEV_OK If successful.
* @retval DEV_NO_SUPPORT if the device doesn't support interrupt (e.g.
* free running counters).
*/
int counter_set_alarm(struct device *dev, void (*callback)(void *data), int count);
Sound fine, but please create a typedef for the callback, a bit more
developed:

typedef void (*counter_callback_t)(struct device *dev, void *user_data)

Then:
- make count as an uint32_t
- and add a void *user_data pointer as well.
+1. Yes, this is a good idea indeed.

Thanks for your feedback,

Andre


Re: RFC: Counter driver API

Andre Guedes <andre.guedes@...>
 

Hi Jesus,

Quoting Jesus Sanchez-Palencia (2016-03-03 09:52:43)
/**
* Start the counter device. If the device is a 'count up' counter the
* counter initial value is set to zero. It it is a 'countdown' counter
* the initial value is set to the maximum value supported by the device.
*
* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Probably better here to:
@retval DEV_NO_SUPPORT if the device doesn't support starting the
counter (e.g. free running counters).
I don't think DEV_NO_SUPPORT will be ever returned by the counter_start API
since this is a very basic API and all counter must support it.

Anyways, I think we should list in the documentation all the return codes
a given API can return instead of simply saying DEV_*.

Looks like we are moving to Posix error codes, so it would be wise to do
it here as
well. (better now than after the API is upstream). Apply that to all.
It's still not clear if the change will go straight to Posix errors or
if the transition through DEV_* will happen first. We can't mix both.
+1.

/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
Set an alarm callback. If the counter was not started yet, this will do
it automatically
(no need to call counter_start()).

In general having an API that does 2 things is not a good idea.
An API called 'counter_set_alarm' should do only that, IMO. I'd rather have
2 API calls for that (set and start), but if we really want it to do both, then maybe
better calling it counter_init_alarm(..., int count); ?!
I'm fine with we have 2 API calls (counter_start and counter_set_alarm).

Regards,

Andre


Re: RFC: Counter driver API

Tomasz Bursztyka
 

Hi Andre,

* @brief Start counter device.
* @param dev Pointer to the device structure for the driver instance.
* @retval DEV_OK If successful.
* @retval DEV_* Code otherwise.
Looks like we are moving to Posix error codes, so it would be wise to do
it here as
well. (better now than after the API is upstream). Apply that to all.
Yes, we'll move to errno codes any time soon. I'd prefer we go with the
current error code convention (DEV_*) at the moment and fix all drivers
at once in the 'errno patchset'.
I missed the idea that DEV_* will anyway be mapped to errno, so keep
DEV_* yes.


/**
* Set an alarm callback. If the counter was not started yet, this
* function starts and set the alarm.
Set an alarm callback. If the counter was not started yet, this will do
it automatically
(no need to call counter_start()).
This is a better comment.
Actually, follow Jesus's comment. counter_set_alarm() should not star
the counter.


What about (let me know if I am wrong, hw feature wise) resetting an alarm?
Currently, it set set it, and nothing cannot stop it.

So we may want a counter_unset_alarm() ?
API-wise, I think it makes sense we have the counter_unset_alarm. I'm just
wondering if the counter_stop API does cover the use case. I mean, counter_stop
stops the counter so the alarm won't be fired.

Now question is: would it be enough to have 1 alarm set a time, or could
it be
interesting to link alarms? (so different subsystem could use set an alarm)
ATM, I'd say we should go with one alarm set a time. For such functionality
you described, I think the user probably wants to use a system-wide timer,
such as the system timer, instead. Bare in mind that this is a driver API
and some platforms may not have any counter available.
If you are using 1 alarm at all time, then don't add counter_unset_alarm()
User could just use counter_set_alarm() with a NULL pointer as a callback

Tomasz


Re: STM32F103x port

Maciek Borzecki <maciek.borzecki@...>
 

I'm sure all of you already got their emails with incoming review
request. For others who might be interested as well, I've posted a
series of patches to gerrit:

https://gerrit.zephyrproject.org/r/645 st_stm32/stm32f1: introduce
STM32F1x SoC family
https://gerrit.zephyrproject.org/r/646 clock_control/Kconfig: Quark
should depend on CLOCK_CONTROL
https://gerrit.zephyrproject.org/r/647 clock_control/stm32f10x:
introduce new driver for STM32F10x RCC
https://gerrit.zephyrproject.org/r/648 soc/stm32f1: add GPIO registers mapping
https://gerrit.zephyrproject.org/r/649 pinmux/stm32f10x: add driver
for STM32F1 pinmux
https://gerrit.zephyrproject.org/r/650 serial/stm32f10x: add new
driver for STM32F10x UART
https://gerrit.zephyrproject.org/r/651 gpio/stm32f10x: add new driver
for STM32F10x GPIO
https://gerrit.zephyrproject.org/r/652 boards/stm32_mini_a15: add new board
https://gerrit.zephyrproject.org/r/653 samples/disco: add 'disco' sample program

--
Maciek Borzecki


[RFC] Sensor API

Vlad Dogaru <vlad.dogaru@...>
 

Hi everyone,

I have uploaded a new iteration of the sensor API patches to Gerrit, you
can find them at [1]. We hope to address some of the concerns regarding
memory consumption of sensor drivers.

For the moment, I have only converted one driver to the new
infrastructure, as I would like to get early feedback on the direction
the API is evolving.

The major change since the previous version is the handling of sensor
triggers. Previously, we operated under the assumption that each driver
that supported interrupts would create its own fiber to which it would
defer bus traffic (since it can't touch I2C or SPI in an ISR).

In this new iteration, the user is given a choice via Kconfig of the
following three approaches:

(1) Driver does not support triggering. No fiber is created.

(2) Driver supports triggering, but uses a system-wide fiber to defer
bus traffic. Multiple drivers can choose this approach, meaning they
only pay the cost of the one fiber.

(3) Driver supports triggering and creates its own fiber for bus
traffic. This ensures the best response time, but uses more memory if
multiple drivers choose to go with this option.

The last patch of the series [2] is an example of how to add support for
cases (2) and (3) if the initial driver only supports triggerless
operation.

There are more drivers available in the sensors topic on Gerrit [3], but
they have not been converted to this newest iteration of the API. If
the response to this RFC is positive, we will convert them to the three
option approach detailed above.

Finally, please be aware that this is still an RFC; at the very least,
the final API will need documentation for standard units for each type
of channel and magnetometer channel types.

[1] https://gerrit.zephyrproject.org/r/487
https://gerrit.zephyrproject.org/r/488
https://gerrit.zephyrproject.org/r/489
https://gerrit.zephyrproject.org/r/490
[2] https://gerrit.zephyrproject.org/r/541

[3] https://gerrit.zephyrproject.org/r/#/q/topic:sensors

Regards,
Vlad


Re: [RFC v2] uart: add ISR callback mechanism for UART drivers

Andre Guedes <andre.guedes@...>
 

Hi Daniel,

Quoting Daniel Leung (2016-03-02 22:35:24)
This is actually a nice improvement on the UART API since it moves the
burden of registering the ISR from the user layer to the driver layer,
which is the right place, IMO.

Actually, the UART API is very low level when we compare it with other
APIs such as SPI and I2C. For instance, the UART API exposes functions
to manipulate the FIFOs and check for interrupt flags. Is there any plan
to add higher level APIs such as "transmit the characters from this buffer
and call this callback once the transmission finishes" or "read 10
characters into this buffer and call this callback once it is done"?
This is something I have thought about, but there is no concrete plan.

Is there anything particular you are looking for? Use cases would be
a good start. This helps me to understand what needs to be done.
No, I don't have anything in particular. Probably the bluetooth drivers
and the console_uart driver are a good source of use cases. For instance,
they all have their own implementation of a mechanism read data
asynchronously. An API such as uart_read(dev, callback, buf, len) might
be useful.

Regards,

Andre

221 - 240 of 8037