aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2016-01-28 15:24:36 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-02-08 20:45:25 +0300
commit474d0e163c902aac32f4908d6da5c13764f412fa (patch)
treea9a7c865e8528b68e33a5bb710078d99353d6c24
parentd937899d498e196c1b77b4d909bb40d360806202 (diff)
api: sched: rename SCHED_SYNC_NONE to _PARALLEL
In practice, this type of queues are referred as "parallel queues" instead of "none queues". Also "none" type is quite pessimistic term, since scheduler may perform lots of HW offload also in this mode. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--example/classifier/odp_classifier.c4
-rw-r--r--example/time/time_global_test.c2
-rw-r--r--example/timer/odp_timer_test.c2
-rw-r--r--include/odp/api/schedule_types.h12
-rw-r--r--platform/linux-generic/include/odp/plat/schedule_types.h2
-rw-r--r--test/performance/odp_l2fwd.c14
-rw-r--r--test/performance/odp_pktio_perf.c2
-rw-r--r--test/validation/classification/odp_classification_common.c2
-rw-r--r--test/validation/classification/odp_classification_tests.c14
-rw-r--r--test/validation/queue/queue.c5
-rw-r--r--test/validation/scheduler/scheduler.c42
11 files changed, 52 insertions, 49 deletions
diff --git a/example/classifier/odp_classifier.c b/example/classifier/odp_classifier.c
index 9e5bec912..afa544460 100644
--- a/example/classifier/odp_classifier.c
+++ b/example/classifier/odp_classifier.c
@@ -370,7 +370,7 @@ static void configure_default_cos(odp_pktio_t pktio, appl_args_t *args)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
queue_default = odp_queue_create(queue_name,
ODP_QUEUE_TYPE_SCHED, &qparam);
@@ -443,7 +443,7 @@ static void configure_cos(odp_pktio_t pktio, appl_args_t *args)
stats->pmr = odp_pmr_create(&match);
odp_queue_param_init(&qparam);
qparam.sched.prio = i % odp_schedule_num_prio();
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
snprintf(queue_name, sizeof(queue_name), "%sQueue%d",
diff --git a/example/time/time_global_test.c b/example/time/time_global_test.c
index df0826c59..47559ea5a 100644
--- a/example/time/time_global_test.c
+++ b/example/time/time_global_test.c
@@ -187,7 +187,7 @@ static void *run_thread(void *ptr)
*/
odp_queue_param_init(&qparams);
qparams.sched.prio = ODP_SCHED_PRIO_LOWEST;
- qparams.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparams.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparams.sched.group = ODP_SCHED_GROUP_WORKER;
id = odp_atomic_fetch_inc_u32(&gbls->id_counter);
diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c
index d2d54dfff..62fc07eeb 100644
--- a/example/timer/odp_timer_test.c
+++ b/example/timer/odp_timer_test.c
@@ -448,7 +448,7 @@ int main(int argc, char *argv[])
*/
odp_queue_param_init(&param);
param.sched.prio = ODP_SCHED_PRIO_DEFAULT;
- param.sched.sync = ODP_SCHED_SYNC_NONE;
+ param.sched.sync = ODP_SCHED_SYNC_PARALLEL;
param.sched.group = ODP_SCHED_GROUP_ALL;
queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED, &param);
diff --git a/include/odp/api/schedule_types.h b/include/odp/api/schedule_types.h
index d4eda7838..cf204f46d 100644
--- a/include/odp/api/schedule_types.h
+++ b/include/odp/api/schedule_types.h
@@ -54,12 +54,14 @@ extern "C" {
*/
/**
- * @def ODP_SCHED_SYNC_NONE
- * Queue not synchronised
+ * @def ODP_SCHED_SYNC_PARALLEL
+ * Parallel scheduled queues
*
- * The scheduler does not provide event synchronization or ordering, only load
- * balancing. Events can be scheduled freely to multiple threads for concurrent
- * processing.
+ * The scheduler performs priority scheduling, load balancing, pre-fetching, etc
+ * functions but does not provide additional event synchronization or ordering.
+ * It's free to schedule events from single parallel queue to multiple threads
+ * for concurrent processing. Application is responsible for queue context
+ * synchronization and event ordering (SW synchronization).
*/
/**
diff --git a/platform/linux-generic/include/odp/plat/schedule_types.h b/platform/linux-generic/include/odp/plat/schedule_types.h
index 21fcbb84c..a4a352c04 100644
--- a/platform/linux-generic/include/odp/plat/schedule_types.h
+++ b/platform/linux-generic/include/odp/plat/schedule_types.h
@@ -37,7 +37,7 @@ typedef int odp_schedule_prio_t;
typedef int odp_schedule_sync_t;
-#define ODP_SCHED_SYNC_NONE 0
+#define ODP_SCHED_SYNC_PARALLEL 0
#define ODP_SCHED_SYNC_ATOMIC 1
#define ODP_SCHED_SYNC_ORDERED 2
diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c
index 3c2d296ca..3179cd32f 100644
--- a/test/performance/odp_l2fwd.c
+++ b/test/performance/odp_l2fwd.c
@@ -59,7 +59,7 @@
typedef enum pkt_in_mode_t {
DIRECT_RECV,
POLL_QUEUE,
- SCHED_NONE,
+ SCHED_PARALLEL,
SCHED_ATOMIC,
SCHED_ORDERED,
} pkt_in_mode_t;
@@ -648,7 +648,7 @@ static int create_pktio(const char *dev, int idx, int num_rx, int num_tx,
else if (gbl_args->appl.mode == SCHED_ORDERED)
sync_mode = ODP_SCHED_SYNC_ORDERED;
else
- sync_mode = ODP_SCHED_SYNC_NONE;
+ sync_mode = ODP_SCHED_SYNC_PARALLEL;
/* Using scheduler for input. Single_user param not relevant. */
in_queue_param.hash_enable = 1;
@@ -952,7 +952,7 @@ static void usage(char *progname)
"\n"
"Optional OPTIONS\n"
" -m, --mode 0: Receive packets directly from pktio interface (default)\n"
- " 1: Receive packets through scheduler sync none queues\n"
+ " 1: Receive packets through scheduler sync parallel queues\n"
" 2: Receive packets through scheduler sync atomic queues\n"
" 3: Receive packets through scheduler sync ordered queues\n"
" 4: Receive packets through poll queues\n"
@@ -1068,7 +1068,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
case 'm':
i = atoi(optarg);
if (i == 1)
- appl_args->mode = SCHED_NONE;
+ appl_args->mode = SCHED_PARALLEL;
else if (i == 2)
appl_args->mode = SCHED_ATOMIC;
else if (i == 3)
@@ -1136,8 +1136,8 @@ static void print_info(char *progname, appl_args_t *appl_args)
printf("DIRECT_RECV");
else if (appl_args->mode == POLL_QUEUE)
printf("POLL_QUEUE");
- else if (appl_args->mode == SCHED_NONE)
- printf("SCHED_NONE");
+ else if (appl_args->mode == SCHED_PARALLEL)
+ printf("SCHED_PARALLEL");
else if (appl_args->mode == SCHED_ATOMIC)
printf("SCHED_ATOMIC");
else if (appl_args->mode == SCHED_ORDERED)
@@ -1300,7 +1300,7 @@ int main(int argc, char *argv[])
thr_run_func = run_worker_direct_mode;
else if (gbl_args->appl.mode == POLL_QUEUE)
thr_run_func = run_worker_poll_mode;
- else /* SCHED_NONE / SCHED_ATOMIC / SCHED_ORDERED */
+ else /* SCHED_PARALLEL / SCHED_ATOMIC / SCHED_ORDERED */
thr_run_func = run_worker_sched_mode;
/* Create worker threads */
diff --git a/test/performance/odp_pktio_perf.c b/test/performance/odp_pktio_perf.c
index f85f882c9..98a55899f 100644
--- a/test/performance/odp_pktio_perf.c
+++ b/test/performance/odp_pktio_perf.c
@@ -767,7 +767,7 @@ static int test_init(void)
/* create and associate an input queue for the RX side */
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
snprintf(inq_name, sizeof(inq_name), "inq-pktio-%" PRIu64,
diff --git a/test/validation/classification/odp_classification_common.c b/test/validation/classification/odp_classification_common.c
index 70d21a2c5..58d12fec0 100644
--- a/test/validation/classification/odp_classification_common.c
+++ b/test/validation/classification/odp_classification_common.c
@@ -162,7 +162,7 @@ odp_queue_t queue_create(const char *queuename, bool sched)
if (sched) {
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
queue = odp_queue_create(queuename,
diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c
index a1187285f..0e39348b8 100644
--- a/test/validation/classification/odp_classification_tests.c
+++ b/test/validation/classification/odp_classification_tests.c
@@ -141,7 +141,7 @@ void configure_cls_pmr_chain(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_NORMAL;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
qparam.sched.lock_count = ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE;
sprintf(queuename, "%s", "SrcQueue");
@@ -167,7 +167,7 @@ void configure_cls_pmr_chain(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_NORMAL;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
sprintf(queuename, "%s", "DstQueue");
@@ -280,7 +280,7 @@ void configure_pktio_default_cos(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
sprintf(queuename, "%s", "DefaultQueue");
queue_list[CLS_DEFAULT] = odp_queue_create(queuename,
@@ -339,7 +339,7 @@ void configure_pktio_error_cos(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_LOWEST;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
sprintf(queuename, "%s", "ErrorCos");
@@ -438,7 +438,7 @@ void configure_cos_with_l2_priority(void)
qos_tbl[i] = 0;
odp_queue_param_init(&qparam);
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
for (i = 0; i < num_qos; i++) {
qparam.sched.prio = ODP_SCHED_PRIO_LOWEST - i;
@@ -524,7 +524,7 @@ void configure_pmr_cos(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
sprintf(queuename, "%s", "PMR_CoS");
@@ -606,7 +606,7 @@ void configure_pktio_pmr_match_set_cos(void)
odp_queue_param_init(&qparam);
qparam.sched.prio = ODP_SCHED_PRIO_HIGHEST;
- qparam.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparam.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparam.sched.group = ODP_SCHED_GROUP_ALL;
sprintf(queuename, "%s", "cos_pmr_set_queue");
diff --git a/test/validation/queue/queue.c b/test/validation/queue/queue.c
index 3c1c64ab1..d412b3b6c 100644
--- a/test/validation/queue/queue.c
+++ b/test/validation/queue/queue.c
@@ -55,7 +55,7 @@ void queue_test_sunnydays(void)
odp_queue_param_init(&qparams);
qparams.sched.prio = ODP_SCHED_PRIO_LOWEST;
- qparams.sched.sync = ODP_SCHED_SYNC_NONE;
+ qparams.sched.sync = ODP_SCHED_SYNC_PARALLEL;
qparams.sched.group = ODP_SCHED_GROUP_WORKER;
queue_creat_id = odp_queue_create("test_queue",
@@ -71,7 +71,8 @@ void queue_test_sunnydays(void)
CU_ASSERT_EQUAL(ODP_SCHED_GROUP_WORKER,
odp_queue_sched_group(queue_id));
CU_ASSERT_EQUAL(ODP_SCHED_PRIO_LOWEST, odp_queue_sched_prio(queue_id));
- CU_ASSERT_EQUAL(ODP_SCHED_SYNC_NONE, odp_queue_sched_type(queue_id));
+ CU_ASSERT_EQUAL(ODP_SCHED_SYNC_PARALLEL,
+ odp_queue_sched_type(queue_id));
CU_ASSERT(0 == odp_queue_context_set(queue_id, &queue_contest));
diff --git a/test/validation/scheduler/scheduler.c b/test/validation/scheduler/scheduler.c
index ff95b4b27..c3a9db163 100644
--- a/test/validation/scheduler/scheduler.c
+++ b/test/validation/scheduler/scheduler.c
@@ -184,7 +184,7 @@ void scheduler_test_queue_destroy(void)
odp_event_t ev;
uint32_t *u32;
int i;
- odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_NONE,
+ odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_PARALLEL,
ODP_SCHED_SYNC_ATOMIC,
ODP_SCHED_SYNC_ORDERED};
@@ -249,7 +249,7 @@ void scheduler_test_groups(void)
odp_event_t ev;
uint32_t *u32;
int i, j, rc;
- odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_NONE,
+ odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_PARALLEL,
ODP_SCHED_SYNC_ATOMIC,
ODP_SCHED_SYNC_ORDERED};
int thr_id = odp_thread_id();
@@ -533,7 +533,7 @@ static void chaos_run(unsigned int qtype)
odp_queue_t from;
int i, rc;
uint64_t wait;
- odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_NONE,
+ odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_PARALLEL,
ODP_SCHED_SYNC_ATOMIC,
ODP_SCHED_SYNC_ORDERED};
const unsigned num_sync = (sizeof(sync) / sizeof(sync[0]));
@@ -898,7 +898,7 @@ static void fill_queues(thread_args_t *args)
odp_queue_t queue;
switch (sync) {
- case ODP_SCHED_SYNC_NONE:
+ case ODP_SCHED_SYNC_PARALLEL:
snprintf(name, sizeof(name),
"sched_%d_%d_n", i, j);
break;
@@ -1047,10 +1047,10 @@ static void parallel_execute(odp_schedule_sync_t sync, int num_queues,
reset_queues(args);
}
-/* 1 queue 1 thread ODP_SCHED_SYNC_NONE */
+/* 1 queue 1 thread ODP_SCHED_SYNC_PARALLEL */
void scheduler_test_1q_1t_n(void)
{
- schedule_common(ODP_SCHED_SYNC_NONE, ONE_Q, ONE_PRIO, SCHD_ONE);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, ONE_Q, ONE_PRIO, SCHD_ONE);
}
/* 1 queue 1 thread ODP_SCHED_SYNC_ATOMIC */
@@ -1065,12 +1065,12 @@ void scheduler_test_1q_1t_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, ONE_Q, ONE_PRIO, SCHD_ONE);
}
-/* Many queues 1 thread ODP_SCHED_SYNC_NONE */
+/* Many queues 1 thread ODP_SCHED_SYNC_PARALLEL */
void scheduler_test_mq_1t_n(void)
{
/* Only one priority involved in these tests, but use
the same number of queues the more general case uses */
- schedule_common(ODP_SCHED_SYNC_NONE, MANY_QS, ONE_PRIO, SCHD_ONE);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, MANY_QS, ONE_PRIO, SCHD_ONE);
}
/* Many queues 1 thread ODP_SCHED_SYNC_ATOMIC */
@@ -1085,12 +1085,12 @@ void scheduler_test_mq_1t_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, MANY_QS, ONE_PRIO, SCHD_ONE);
}
-/* Many queues 1 thread check priority ODP_SCHED_SYNC_NONE */
+/* Many queues 1 thread check priority ODP_SCHED_SYNC_PARALLEL */
void scheduler_test_mq_1t_prio_n(void)
{
int prio = odp_schedule_num_prio();
- schedule_common(ODP_SCHED_SYNC_NONE, MANY_QS, prio, SCHD_ONE);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, MANY_QS, prio, SCHD_ONE);
}
/* Many queues 1 thread check priority ODP_SCHED_SYNC_ATOMIC */
@@ -1109,12 +1109,12 @@ void scheduler_test_mq_1t_prio_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, MANY_QS, prio, SCHD_ONE);
}
-/* Many queues many threads check priority ODP_SCHED_SYNC_NONE */
+/* Many queues many threads check priority ODP_SCHED_SYNC_PARALLEL */
void scheduler_test_mq_mt_prio_n(void)
{
int prio = odp_schedule_num_prio();
- parallel_execute(ODP_SCHED_SYNC_NONE, MANY_QS, prio, SCHD_ONE,
+ parallel_execute(ODP_SCHED_SYNC_PARALLEL, MANY_QS, prio, SCHD_ONE,
DISABLE_EXCL_ATOMIC);
}
@@ -1143,10 +1143,10 @@ void scheduler_test_1q_mt_a_excl(void)
ENABLE_EXCL_ATOMIC);
}
-/* 1 queue 1 thread ODP_SCHED_SYNC_NONE multi */
+/* 1 queue 1 thread ODP_SCHED_SYNC_PARALLEL multi */
void scheduler_test_multi_1q_1t_n(void)
{
- schedule_common(ODP_SCHED_SYNC_NONE, ONE_Q, ONE_PRIO, SCHD_MULTI);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, ONE_Q, ONE_PRIO, SCHD_MULTI);
}
/* 1 queue 1 thread ODP_SCHED_SYNC_ATOMIC multi */
@@ -1161,12 +1161,12 @@ void scheduler_test_multi_1q_1t_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, ONE_Q, ONE_PRIO, SCHD_MULTI);
}
-/* Many queues 1 thread ODP_SCHED_SYNC_NONE multi */
+/* Many queues 1 thread ODP_SCHED_SYNC_PARALLEL multi */
void scheduler_test_multi_mq_1t_n(void)
{
/* Only one priority involved in these tests, but use
the same number of queues the more general case uses */
- schedule_common(ODP_SCHED_SYNC_NONE, MANY_QS, ONE_PRIO, SCHD_MULTI);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, MANY_QS, ONE_PRIO, SCHD_MULTI);
}
/* Many queues 1 thread ODP_SCHED_SYNC_ATOMIC multi */
@@ -1181,12 +1181,12 @@ void scheduler_test_multi_mq_1t_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, MANY_QS, ONE_PRIO, SCHD_MULTI);
}
-/* Many queues 1 thread check priority ODP_SCHED_SYNC_NONE multi */
+/* Many queues 1 thread check priority ODP_SCHED_SYNC_PARALLEL multi */
void scheduler_test_multi_mq_1t_prio_n(void)
{
int prio = odp_schedule_num_prio();
- schedule_common(ODP_SCHED_SYNC_NONE, MANY_QS, prio, SCHD_MULTI);
+ schedule_common(ODP_SCHED_SYNC_PARALLEL, MANY_QS, prio, SCHD_MULTI);
}
/* Many queues 1 thread check priority ODP_SCHED_SYNC_ATOMIC multi */
@@ -1205,12 +1205,12 @@ void scheduler_test_multi_mq_1t_prio_o(void)
schedule_common(ODP_SCHED_SYNC_ORDERED, MANY_QS, prio, SCHD_MULTI);
}
-/* Many queues many threads check priority ODP_SCHED_SYNC_NONE multi */
+/* Many queues many threads check priority ODP_SCHED_SYNC_PARALLEL multi */
void scheduler_test_multi_mq_mt_prio_n(void)
{
int prio = odp_schedule_num_prio();
- parallel_execute(ODP_SCHED_SYNC_NONE, MANY_QS, prio, SCHD_MULTI, 0);
+ parallel_execute(ODP_SCHED_SYNC_PARALLEL, MANY_QS, prio, SCHD_MULTI, 0);
}
/* Many queues many threads check priority ODP_SCHED_SYNC_ATOMIC multi */
@@ -1326,7 +1326,7 @@ static int create_queues(void)
odp_queue_t q, pq;
snprintf(name, sizeof(name), "sched_%d_%d_n", i, j);
- p.sched.sync = ODP_SCHED_SYNC_NONE;
+ p.sched.sync = ODP_SCHED_SYNC_PARALLEL;
q = odp_queue_create(name, ODP_QUEUE_TYPE_SCHED, &p);
if (q == ODP_QUEUE_INVALID) {