@@ -37,6 +37,7 @@ int odp_shm_init_local(void);
int odp_buffer_pool_init_global(void);
int odp_buffer_pool_term_global(void);
+int odp_buffer_pool_term_local(void);
int odp_pktio_init_global(void);
int odp_pktio_term_global(void);
@@ -54,6 +55,7 @@ int odp_crypto_term_global(void);
int odp_schedule_init_global(void);
int odp_schedule_term_global(void);
int odp_schedule_init_local(void);
+int odp_schedule_term_local(void);
int odp_timer_init_global(void);
int odp_timer_disarm_all(void);
@@ -124,6 +124,13 @@ int odp_buffer_pool_term_global(void)
return ret;
}
+int odp_buffer_pool_term_local(void)
+{
+ _odp_flush_caches();
+ return 0;
+}
+
+
/**
* Buffer pool creation
*/
@@ -141,5 +141,15 @@ int odp_init_local(void)
int odp_term_local(void)
{
+ if (odp_schedule_term_local()) {
+ ODP_ERR("ODP schedule local term failed.\n");
+ return -1;
+ }
+
+ if (odp_buffer_pool_term_local()) {
+ ODP_ERR("ODP buffer pool local term failed.\n");
+ return -1;
+ }
+
return (odp_thread_term_local() > 0) ? 1 : 0;
}
@@ -184,7 +184,11 @@ int odp_schedule_init_local(void)
return 0;
}
-
+int odp_schedule_term_local(void)
+{
+ memset(&sched_local, 0, sizeof(sched_local_t));
+ return 0;
+}
void odp_schedule_mask_set(odp_queue_t queue, int prio)
{