Threads that hold MSUs. More...
#include "worker_thread.h"#include "msu_type.h"#include "local_msu.h"#include "logging.h"#include "thread_message.h"#include "msu_message.h"#include "controller_communication.h"#include <stdlib.h>Go to the source code of this file.
Macros | |
| #define | MAX_DEDOS_THREAD_ID 32 |
| The maximum ID that can be assigned to a worker thread. More... | |
| #define | CHECK_MSG_SIZE(msg, target) |
| Checks whether the size of the message is equal to the size of the target struct. More... | |
| #define | DEFAULT_WAIT_TIMEOUT_S 1 |
| Default amount of time to wait before sem_trywait should return. More... | |
Functions | |
| static void * | init_worker_thread (struct dedos_thread *thread) |
| Allocates and returns a new worker thread structure. More... | |
| void | stop_all_worker_threads () |
| Signals all worker threads to stop. More... | |
| static void | destroy_worker_thread (struct dedos_thread *thread, void *v_worker_thread) |
| Destroys all MSUs on a worker thread and frees the associated structure. More... | |
| struct worker_thread * | get_worker_thread (int id) |
| static int | get_msu_index (struct worker_thread *thread, int msu_id) |
| Gets the index in worker_thread::msus at which the msu_id resides. More... | |
| static int | remove_idx_from_msu_list (struct worker_thread *thread, int idx) |
| Removes the MSU at the given index from the worker_thread::msus. More... | |
| int | unregister_msu_with_thread (struct local_msu *msu) |
| Removes an MSU from the list of MSUs within its thread. More... | |
| int | register_msu_with_thread (struct local_msu *msu) |
| Registers an MSU as one that should be run on its assigned thread. More... | |
| static int | create_msu_on_thread (struct worker_thread *thread, struct ctrl_create_msu_msg *msg) |
| Creates a new MSU on this thread based on the provided message. More... | |
| static int | del_msu_from_thread (struct worker_thread *thread, struct ctrl_delete_msu_msg *msg, int ack_id) |
| Removes an MSU from this thread based on the provided messages. More... | |
| static int | worker_mod_msu_route (struct worker_thread *thread, struct ctrl_msu_route_msg *msg) |
| Modifies the MSU's routes, either adding or removing a route subscription. More... | |
| static int | process_worker_thread_msg (struct worker_thread *thread, struct thread_msg *msg) |
| Processes a message which has been sent to the worker thread. More... | |
| static double | timediff_s (struct timespec *t1, struct timespec *t2) |
| Returns the difference in time in seconds, t2 - t1. More... | |
| static struct timespec * | next_timeout (struct worker_thread *thread) |
| Returns the next time at which the worker thread should exit its semaphore wait. More... | |
| int | enqueue_worker_timeout (struct worker_thread *thread, struct timespec *interval) |
Signals that the given thread should break when waiting on its semaphore once interval time has passed. More... | |
| static int | worker_thread_loop (struct dedos_thread *thread, void *v_worker_thread) |
| The main worker thread loop. More... | |
| int | create_worker_thread (unsigned int thread_id, enum blocking_mode mode) |
| Starts a new worker thread with the given thread ID and pinned/unpinned status. More... | |
Variables | |
| static struct worker_thread * | worker_threads [32] |
| Static struct to keep track of worker threads. More... | |
| static struct timespec | cur_time |
| Static structure for holding current time, so it can be returned from next_timeout. More... | |
Threads that hold MSUs.
Definition in file worker_thread.c.
| #define CHECK_MSG_SIZE | ( | msg, | |
| target | |||
| ) |
Checks whether the size of the message is equal to the size of the target struct.
Definition at line 214 of file worker_thread.c.
| #define DEFAULT_WAIT_TIMEOUT_S 1 |
Default amount of time to wait before sem_trywait should return.
Definition at line 267 of file worker_thread.c.
| #define MAX_DEDOS_THREAD_ID 32 |
The maximum ID that can be assigned to a worker thread.
Definition at line 36 of file worker_thread.c.
|
static |
Creates a new MSU on this thread based on the provided message.
Definition at line 131 of file worker_thread.c.
| int create_worker_thread | ( | unsigned int | thread_id, |
| enum blocking_mode | mode | ||
| ) |
Starts a new worker thread with the given thread ID and pinned/unpinned status.
Blocks until thread has been started
Definition at line 382 of file worker_thread.c.
|
static |
Removes an MSU from this thread based on the provided messages.
Definition at line 147 of file worker_thread.c.
|
static |
Destroys all MSUs on a worker thread and frees the associated structure.
Definition at line 70 of file worker_thread.c.
| int enqueue_worker_timeout | ( | struct worker_thread * | thread, |
| struct timespec * | interval | ||
| ) |
Signals that the given thread should break when waiting on its semaphore once interval time has passed.
Definition at line 301 of file worker_thread.c.
|
static |
Gets the index in worker_thread::msus at which the msu_id resides.
Definition at line 88 of file worker_thread.c.
| struct worker_thread* get_worker_thread | ( | int | id | ) |
Definition at line 79 of file worker_thread.c.
|
static |
Allocates and returns a new worker thread structure.
Definition at line 42 of file worker_thread.c.
|
static |
Returns the next time at which the worker thread should exit its semaphore wait.
Definition at line 278 of file worker_thread.c.
|
static |
Processes a message which has been sent to the worker thread.
Definition at line 222 of file worker_thread.c.
| int register_msu_with_thread | ( | struct local_msu * | msu | ) |
Registers an MSU as one that should be run on its assigned thread.
Definition at line 119 of file worker_thread.c.
|
static |
Removes the MSU at the given index from the worker_thread::msus.
Definition at line 98 of file worker_thread.c.
| void stop_all_worker_threads | ( | ) |
Signals all worker threads to stop.
Definition at line 54 of file worker_thread.c.
|
static |
Returns the difference in time in seconds, t2 - t1.
Definition at line 270 of file worker_thread.c.
| int unregister_msu_with_thread | ( | struct local_msu * | msu | ) |
Removes an MSU from the list of MSUs within its thread.
Definition at line 110 of file worker_thread.c.
|
static |
Modifies the MSU's routes, either adding or removing a route subscription.
Definition at line 180 of file worker_thread.c.
|
static |
The main worker thread loop.
Checks for exit signal, processes messages
Definition at line 345 of file worker_thread.c.
|
static |
Static structure for holding current time, so it can be returned from next_timeout.
Definition at line 275 of file worker_thread.c.
|
static |
Static struct to keep track of worker threads.
Definition at line 39 of file worker_thread.c.
1.8.6