Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
test_poll.c File Reference
#include <zephyr/ztest.h>
#include <zephyr/kernel.h>

Data Structures

struct  fifo_msg
 

Macros

#define SIGNAL_RESULT   0x1ee7d00d
 
#define FIFO_MSG_VALUE   0xdeadbeef
 
#define MSGQ_MSG_SIZE   4
 
#define MSGQ_MAX_MSGS   16
 
#define MSGQ_MSG_VALUE   {'a', 'b', 'c', 'd'}
 
#define PIPE_DATA   "atad_epip"
 
#define STACK_SIZE   (1024 + CONFIG_TEST_EXTRA_STACK_SIZE)
 
#define TAG_0   10
 
#define TAG_1   11
 
#define TAG_2   12
 
#define TAG_3   13
 
#define TAG_4   14
 
#define USE_FIFO   (1 << 0)
 
#define USE_MSGQ   (1 << 1)
 
#define USE_PIPE   (1 << 2)
 

Functions

 K_PIPE_DEFINE (no_wait_pipe, 32, 1)
 
 K_THREAD_STACK_DEFINE (test_stack,(1024+CONFIG_TEST_EXTRA_STACK_SIZE))
 
 K_THREAD_STACK_DEFINE (test_loprio_stack,(1024+CONFIG_TEST_EXTRA_STACK_SIZE))
 
 K_MSGQ_DEFINE (msgq_high_prio_thread, sizeof(unsigned int), 4, 4)
 
static K_THREAD_STACK_DEFINE (high_prio_stack_area, 4096)
 
void test_poll_no_wait (void)
 Test poll events with no wait.
 
static K_SEM_DEFINE (wait_sem, 0, 1)
 
static K_FIFO_DEFINE (wait_fifo)
 
 K_PIPE_DEFINE (wait_pipe, 32, 1)
 
static void poll_wait_helper (void *use_queuelike, void *msgq, void *p3)
 
void check_results (struct k_poll_event *events, uint32_t event_type, bool is_available)
 
void test_poll_wait (void)
 Test polling with wait.
 
static void poll_cancel_helper (void *p1, void *p2, void *p3)
 
void test_poll_cancel (bool is_main_low_prio)
 Test polling of cancelled fifo.
 
void test_poll_cancel_main_low_prio (void)
 
void test_poll_cancel_main_high_prio (void)
 
static K_SEM_DEFINE (multi_sem, 0, 1)
 
static void multi_lowprio (void *p1, void *p2, void *p3)
 
static K_SEM_DEFINE (multi_reply, 0, 1)
 
static void multi (void *p1, void *p2, void *p3)
 
static K_SEM_DEFINE (multi_ready_sem, 1, 1)
 
void test_poll_multi (void)
 Test polling of multiple events.
 
static void threadstate (void *p1, void *p2, void *p3)
 
void test_poll_threadstate (void)
 Test polling of events by manipulating polling thread state.
 
void poll_test_grant_access (void)
 
static void high_prio_main (void *param1, void *param2, void *param3)
 
void test_poll_msgq (void)
 
void test_poll_zero_events (void)
 

Variables

static struct k_sem no_wait_sem
 
static struct k_fifo no_wait_fifo
 
static struct k_poll_signal no_wait_signal
 
static struct k_poll_signal test_signal
 
static struct k_sem zero_events_sem
 
static struct k_thread test_thread
 
static struct k_thread test_loprio_thread
 
static struct k_thread high_prio_data
 
static volatile bool wake_up_by_poll = true
 
static struct k_msgq wait_msgq
 
static struct k_msgqwait_msgq_ptr
 
static struct k_poll_signal wait_signal
 
struct fifo_msg wait_msg = { NULL, 0xdeadbeef }
 
struct k_poll_event wait_events []
 
static struct k_fifo cancel_fifo
 
static struct k_fifo non_cancel_fifo
 
static struct k_poll_signal signal
 

Macro Definition Documentation

◆ FIFO_MSG_VALUE

#define FIFO_MSG_VALUE   0xdeadbeef

◆ MSGQ_MAX_MSGS

#define MSGQ_MAX_MSGS   16

◆ MSGQ_MSG_SIZE

#define MSGQ_MSG_SIZE   4

◆ MSGQ_MSG_VALUE

#define MSGQ_MSG_VALUE   {'a', 'b', 'c', 'd'}

◆ PIPE_DATA

#define PIPE_DATA   "atad_epip"

◆ SIGNAL_RESULT

#define SIGNAL_RESULT   0x1ee7d00d

◆ STACK_SIZE

#define STACK_SIZE   (1024 + CONFIG_TEST_EXTRA_STACK_SIZE)

◆ TAG_0

#define TAG_0   10

◆ TAG_1

#define TAG_1   11

◆ TAG_2

#define TAG_2   12

◆ TAG_3

#define TAG_3   13

◆ TAG_4

#define TAG_4   14

◆ USE_FIFO

#define USE_FIFO   (1 << 0)

◆ USE_MSGQ

#define USE_MSGQ   (1 << 1)

◆ USE_PIPE

#define USE_PIPE   (1 << 2)

Function Documentation

◆ check_results()

void check_results ( struct k_poll_event * events,
uint32_t event_type,
bool is_available )

◆ high_prio_main()

static void high_prio_main ( void * param1,
void * param2,
void * param3 )
static

◆ K_FIFO_DEFINE()

static K_FIFO_DEFINE ( wait_fifo )
static

◆ K_MSGQ_DEFINE()

K_MSGQ_DEFINE ( msgq_high_prio_thread ,
sizeof(unsigned int) ,
4 ,
4  )

◆ K_PIPE_DEFINE() [1/2]

K_PIPE_DEFINE ( no_wait_pipe ,
32 ,
1  )

◆ K_PIPE_DEFINE() [2/2]

K_PIPE_DEFINE ( wait_pipe ,
32 ,
1  )

◆ K_SEM_DEFINE() [1/4]

static K_SEM_DEFINE ( multi_ready_sem ,
1 ,
1  )
static

◆ K_SEM_DEFINE() [2/4]

static K_SEM_DEFINE ( multi_reply ,
0 ,
1  )
static

◆ K_SEM_DEFINE() [3/4]

static K_SEM_DEFINE ( multi_sem ,
0 ,
1  )
static

◆ K_SEM_DEFINE() [4/4]

static K_SEM_DEFINE ( wait_sem ,
0 ,
1  )
static

◆ K_THREAD_STACK_DEFINE() [1/3]

static K_THREAD_STACK_DEFINE ( high_prio_stack_area ,
4096  )
static

◆ K_THREAD_STACK_DEFINE() [2/3]

K_THREAD_STACK_DEFINE ( test_loprio_stack ,
(1024+CONFIG_TEST_EXTRA_STACK_SIZE)  )

◆ K_THREAD_STACK_DEFINE() [3/3]

K_THREAD_STACK_DEFINE ( test_stack ,
(1024+CONFIG_TEST_EXTRA_STACK_SIZE)  )

◆ multi()

static void multi ( void * p1,
void * p2,
void * p3 )
static

◆ multi_lowprio()

static void multi_lowprio ( void * p1,
void * p2,
void * p3 )
static

◆ poll_cancel_helper()

static void poll_cancel_helper ( void * p1,
void * p2,
void * p3 )
static

◆ poll_test_grant_access()

void poll_test_grant_access ( void )

◆ poll_wait_helper()

static void poll_wait_helper ( void * use_queuelike,
void * msgq,
void * p3 )
static

◆ test_poll_cancel_main_high_prio()

void test_poll_cancel_main_high_prio ( void )

◆ test_poll_cancel_main_low_prio()

void test_poll_cancel_main_low_prio ( void )

◆ test_poll_msgq()

void test_poll_msgq ( void )

◆ test_poll_zero_events()

void test_poll_zero_events ( void )

◆ threadstate()

static void threadstate ( void * p1,
void * p2,
void * p3 )
static

Variable Documentation

◆ cancel_fifo

struct k_fifo cancel_fifo
static

◆ high_prio_data

struct k_thread high_prio_data
static

◆ no_wait_fifo

struct k_fifo no_wait_fifo
static

◆ no_wait_sem

struct k_sem no_wait_sem
static

◆ no_wait_signal

struct k_poll_signal no_wait_signal
static

◆ non_cancel_fifo

struct k_fifo non_cancel_fifo
static

◆ signal

struct k_poll_signal signal
static

◆ test_loprio_thread

struct k_thread test_loprio_thread
static

◆ test_signal

struct k_poll_signal test_signal
static

◆ test_thread

struct k_thread test_thread ( void )
static

◆ wait_events

struct k_poll_event wait_events[]
Initial value:
= {
&wait_sem, 10 ),
&wait_fifo, 11 ),
&wait_signal, 12 ),
NULL),
&wait_msgq, 13 ),
&wait_pipe, 14 ),
}
#define K_POLL_TYPE_SEM_AVAILABLE
Definition kernel.h:5973
#define K_POLL_TYPE_SIGNAL
Definition kernel.h:5972
#define K_POLL_TYPE_PIPE_DATA_AVAILABLE
Definition kernel.h:5977
#define K_POLL_TYPE_FIFO_DATA_AVAILABLE
Definition kernel.h:5975
#define K_POLL_EVENT_INITIALIZER(_event_type, _event_mode, _event_obj)
Definition kernel.h:6059
#define K_POLL_TYPE_MSGQ_DATA_AVAILABLE
Definition kernel.h:5976
#define K_POLL_EVENT_STATIC_INITIALIZER(_event_type, _event_mode, _event_obj, event_tag)
Definition kernel.h:6071
#define K_POLL_TYPE_IGNORE
Definition kernel.h:5971
@ K_POLL_MODE_NOTIFY_ONLY
Definition kernel.h:5982
#define NULL
Definition iar_missing_defs.h:20
static struct k_poll_signal wait_signal
Definition test_poll.c:204
static struct k_msgq wait_msgq
Definition test_poll.c:199

◆ wait_msg

struct fifo_msg wait_msg = { NULL, 0xdeadbeef }

◆ wait_msgq

struct k_msgq wait_msgq
static

◆ wait_msgq_ptr

struct k_msgq* wait_msgq_ptr
static

◆ wait_signal

struct k_poll_signal wait_signal
static
Initial value:
=
#define K_POLL_SIGNAL_INITIALIZER(obj)
Definition kernel.h:6012

◆ wake_up_by_poll

volatile bool wake_up_by_poll = true
static

◆ zero_events_sem

struct k_sem zero_events_sem
static