smp and mpu are architecture specific samples and do not apply to majority of support platforms, so move them to arch/. Signed-off-by: Anas Nashif <anas.nashif@intel.com>
47 lines
969 B
C
47 lines
969 B
C
/*
|
|
* Copyright (c) 2020 Synopsys, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "pktqueue.h"
|
|
|
|
/* Put a packet header in a queue defined in argument */
|
|
void phdr_desc_enqueue(struct phdr_desc_queue *queue, struct phdr_desc *desc,
|
|
struct k_mutex *mutex)
|
|
{
|
|
/* Locking queue */
|
|
k_mutex_lock(mutex, K_FOREVER);
|
|
|
|
if (queue->count == 0) {
|
|
queue->head = queue->tail = desc;
|
|
} else {
|
|
queue->tail->next = desc;
|
|
queue->tail = desc;
|
|
}
|
|
queue->count++;
|
|
desc->next = NULL;
|
|
|
|
/* Unlocking queue */
|
|
k_mutex_unlock(mutex);
|
|
}
|
|
|
|
/* Take a packet header from queue defined in argument */
|
|
struct phdr_desc *phdr_desc_dequeue(struct phdr_desc_queue *queue,
|
|
struct k_mutex *mutex)
|
|
{
|
|
struct phdr_desc *return_ptr = NULL;
|
|
/* Locking queue */
|
|
k_mutex_lock(mutex, K_FOREVER);
|
|
if (queue->count != 0) {
|
|
queue->count--;
|
|
return_ptr = queue->head;
|
|
queue->head = queue->head->next;
|
|
}
|
|
|
|
/* Unlocking queue */
|
|
k_mutex_unlock(mutex);
|
|
|
|
return return_ptr;
|
|
}
|