[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH 8/8] lib/uksched: Minor refinements



Hi Felipe,

On 9/25/18 1:19 PM, Felipe Huici wrote:
> Hi,
> 
> 
>> - Schedulers implementations should set scheduler reference on threads
>> - uk_sched_start is public
>> - initialize reentrant field on threads
>> - remove redundant config dependencies on ukschedcoop lib
>>
>> Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
>> ---
>> lib/uksched/include/uk/sched.h | 14 ++++++--------
>> lib/uksched/thread.c           |  4 +++-
>> lib/ukschedcoop/Config.uk      |  2 --
>> lib/ukschedcoop/schedcoop.c    |  1 +
>> 4 files changed, 10 insertions(+), 11 deletions(-)
>>
>> diff --git a/lib/uksched/include/uk/sched.h
>> b/lib/uksched/include/uk/sched.h
>> index 5800c07..9e04bfa 100644
>> --- a/lib/uksched/include/uk/sched.h
>> +++ b/lib/uksched/include/uk/sched.h
>> @@ -112,7 +112,6 @@ static inline int uk_sched_thread_add(struct uk_sched
>> *s,
>> {
>>      UK_ASSERT(s);
>>      UK_ASSERT(t);
>> -    t->sched = s;
>>      return s->thread_add(s, t, attr);
>> }
>>
>> @@ -122,7 +121,6 @@ static inline void uk_sched_thread_remove(struct
>> uk_sched *s,
>>      UK_ASSERT(s);
>>      UK_ASSERT(t);
>>      s->thread_remove(s, t);
>> -    t->sched = NULL;
>> }
>>
>> static inline int uk_sched_thread_set_prio(struct uk_sched *s,
>> @@ -184,12 +182,6 @@ static inline struct uk_thread
>> *uk_sched_get_idle(struct uk_sched *s)
>>      return &s->idle;
>> }
>>
>> -/*
>> - * Public scheduler functions
>> - */
>> -
>> -void uk_sched_start(struct uk_sched *sched) __noreturn;
>> -
>> #define uk_sched_init(s, yield_func, \
>>              thread_add_func, thread_remove_func, \
>>              thread_set_prio_func, thread_get_prio_func, \
>> @@ -205,6 +197,12 @@ void uk_sched_start(struct uk_sched *sched)
>> __noreturn;
>>              uk_sched_register((s)); \
>>      } while (0)
>>
>> +/*
>> + * Public scheduler functions
>> + */
>> +
>> +void uk_sched_start(struct uk_sched *sched) __noreturn;
>> +
>>
>> /*
>>  * Internal thread scheduling functions
>> diff --git a/lib/uksched/thread.c b/lib/uksched/thread.c
>> index a06e338..fa7d3a1 100644
>> --- a/lib/uksched/thread.c
>> +++ b/lib/uksched/thread.c
>> @@ -29,6 +29,7 @@
>>  * Thread definitions
>>  * Ported from Mini-OS
>>  */
>> +#include <string.h>
>> #include <stdlib.h>
>> #include <errno.h>
>> #include <uk/plat/config.h>
>> @@ -89,10 +90,11 @@ int uk_thread_init(struct uk_thread *thread,
>>      thread->flags = 0;
>>      thread->wakeup_time = 0LL;
>>      uk_waitq_init(&thread->waiting_threads);
>> +    thread->sched = NULL;
>>      thread->sched_info = NULL;
>>
>> #ifdef CONFIG_HAVE_LIBC
>> -    //TODO _REENT_INIT_PTR(&thread->reent);
>> +    _REENT_INIT_PTR(&thread->reent);
> 
> As far as I can tell, struct _reent is newlib-specific. We should not tie
> Unikraft to a particular libc implementation…

Alright, then I'll use CONFIG_LIBNEWLIBC in v2 instead.
> 
> 
>> #endif
>>
>>      uk_printd(DLVL_INFO, "Thread \"%s\": pointer: %p, stack: %p\n",
>> diff --git a/lib/ukschedcoop/Config.uk b/lib/ukschedcoop/Config.uk
>> index b4277a1..8a50725 100644
>> --- a/lib/ukschedcoop/Config.uk
>> +++ b/lib/ukschedcoop/Config.uk
>> @@ -1,6 +1,4 @@
>> config LIBUKSCHEDCOOP
>>      bool "ukschedcoop: Cooperative Round-Robin scheduler"
>>      default n
>> -    select LIBNOLIBC if !HAVE_LIBC
>> -    select LIBUKDEBUG
>>      select LIBUKSCHED
>> diff --git a/lib/ukschedcoop/schedcoop.c b/lib/ukschedcoop/schedcoop.c
>> index 3b3a554..ff0366a 100644
>> --- a/lib/ukschedcoop/schedcoop.c
>> +++ b/lib/ukschedcoop/schedcoop.c
>> @@ -148,6 +148,7 @@ static int schedcoop_thread_add(struct uk_sched *s,
>> struct uk_thread *t,
>>      }
>>
>>      set_runnable(t);
>> +    t->sched = s;
>>
>>      flags = ukplat_lcpu_save_irqf();
>>      UK_TAILQ_INSERT_TAIL(&prv->thread_list, t, thread_list);
>> -- 
>> 2.11.0
>>
> 
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/minios-devel
> 

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.