From patchwork Thu Sep 11 19:34:37 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuji Mano X-Patchwork-Id: 241 X-Patchwork-Delegate: yuji.mano@am.sony.com Return-Path: X-Original-To: patchwork@ozlabs.org Delivered-To: patchwork@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 83FB6DE7F1 for ; Fri, 12 Sep 2008 06:38:20 +1000 (EST) X-Original-To: cbe-oss-dev@ozlabs.org Delivered-To: cbe-oss-dev@ozlabs.org Received: from SG2EHSOBE005.bigfish.com (outbound-sin.frontbridge.com [207.46.51.80]) by ozlabs.org (Postfix) with ESMTP id C9F1BDE2F6 for ; Fri, 12 Sep 2008 06:37:15 +1000 (EST) Received: from mail139-sin-R.bigfish.com (10.3.40.3) by SG2EHSOBE005.bigfish.com (10.3.40.25) with Microsoft SMTP Server id 8.1.291.1; Thu, 11 Sep 2008 20:37:12 +0000 Received: from mail139-sin (localhost.localdomain [127.0.0.1]) by mail139-sin-R.bigfish.com (Postfix) with ESMTP id CD8F81B30380 for ; Thu, 11 Sep 2008 20:37:12 +0000 (UTC) X-BigFish: VS4(zzzz10c0j10d3izz1497iz2dh6bh61h) X-Spam-TCS-SCL: 0:0 Received: by mail139-sin (MessageSwitch) id 1221165429621135_15145; Thu, 11 Sep 2008 20:37:09 +0000 (UCT) Received: from mail8.fw-sd.sony.com (mail8.fw-sd.sony.com [160.33.66.75]) by mail139-sin.bigfish.com (Postfix) with ESMTP id 2C255A2805E for ; Thu, 11 Sep 2008 20:37:08 +0000 (UTC) Received: from mail3.sjc.in.sel.sony.com (mail3.sjc.in.sel.sony.com [43.134.1.211]) by mail8.fw-sd.sony.com (8.14.2/8.14.2) with ESMTP id m8BKb70K021138 for ; Thu, 11 Sep 2008 20:37:07 GMT Received: from USSDIXIM02.am.sony.com (ussdixim02.am.sony.com [43.130.140.34]) by mail3.sjc.in.sel.sony.com (8.12.11/8.12.11) with ESMTP id m8BKb7t5021726 for ; Thu, 11 Sep 2008 20:37:07 GMT Received: from ussdixms03.am.sony.com ([43.130.140.23]) by USSDIXIM02.am.sony.com with Microsoft SMTPSVC(5.0.2195.6713); Thu, 11 Sep 2008 13:37:06 -0700 Received: from [43.135.148.175] ([43.135.148.175]) by ussdixms03.am.sony.com with Microsoft SMTPSVC(5.0.2195.6713); Thu, 11 Sep 2008 13:37:06 -0700 Message-ID: <48C972CD.4020108@am.sony.com> Date: Thu, 11 Sep 2008 12:34:37 -0700 From: Yuji Mano User-Agent: Thunderbird 2.0.0.5 (X11/20070719) MIME-Version: 1.0 To: CBE Development X-Enigmail-Version: 0.95.7 X-OriginalArrivalTime: 11 Sep 2008 20:37:06.0585 (UTC) FILETIME=[27E14890:01C9144E] X-SEL-encryption-scan: scanned Subject: [Cbe-oss-dev] [PATCH 04/11]MARS: Kernel internal implementation cleanup X-BeenThere: cbe-oss-dev@ozlabs.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Discussion about Open Source Software for the Cell Broadband Engine List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org Errors-To: cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org This cleans up some internal implementation of the MARS kernel. The changes mainly consists of renaming some internal function names for consistency and replacing the term "process" with "workload" for consistency with MARS design and documentation. Signed-off-by: Yuji Mano Acked-by: Kazunori Asayama --- a/include/host/mars/mars_task.h +++ b/include/host/mars/mars_task.h @@ -115,8 +115,7 @@ struct mars_task_params { * \n MARS_ERROR_MEMORY - not enough memory * \n MARS_ERROR_LIMIT - task queue is currently full */ -int mars_task_initialize(struct mars_context *mars, - struct mars_task_id *id, +int mars_task_initialize(struct mars_context *mars, struct mars_task_id *id, struct mars_task_params *params); /** @@ -170,8 +169,7 @@ int mars_task_finalize(struct mars_task_ * \n MARS_ERROR_PARAMS - bad task id specified * \n MARS_ERROR_STATE - task is in an invalid state */ -int mars_task_schedule(struct mars_task_id *id, - struct mars_task_args *args, +int mars_task_schedule(struct mars_task_id *id, struct mars_task_args *args, uint8_t priority); /** --- a/include/mpu/mars/mars_kernel.h +++ b/include/mpu/mars/mars_kernel.h @@ -109,10 +109,10 @@ uint16_t workload_get_id(void); uint64_t workload_get_ea(void); struct mars_workload_context * workload_get_context(void); -void workload_run(void); -void workload_stop(void); -void workload_save(void); -void workload_restore(void); +void workload_exec(void); +void workload_exit(void); +void workload_yield(void); +void workload_resume(void); int workload_schedule(uint16_t workload_id, void *args, uint8_t priority); int workload_wait(uint16_t workload_id); int workload_try_wait(uint16_t workload_id); @@ -121,10 +121,10 @@ void workload_signal_wait(void); int workload_signal_try_wait(void); /* task specific functions */ -void task_run(struct mars_task_context *task); -void task_stop(struct mars_task_context *task); -void task_save(struct mars_task_context *task); -void task_restore(struct mars_task_context *task); +void task_exec(struct mars_task_context *task); +void task_exit(struct mars_task_context *task); +void task_yield(struct mars_task_context *task); +void task_resume(struct mars_task_context *task); void task_schedule(struct mars_task_context *task, struct mars_task_args *args); extern struct mars_kernel_params kernel_params; --- a/include/mpu/mars/mars_task.h +++ b/include/mpu/mars/mars_task.h @@ -128,8 +128,7 @@ int mars_task_yield(void); * \n MARS_ERROR_PARAMS - bad task id specified * \n MARS_ERROR_STATE - task is in an invalid state */ -int mars_task_schedule(struct mars_task_id *id, - struct mars_task_args *args, +int mars_task_schedule(struct mars_task_id *id, struct mars_task_args *args, uint8_t priority); /** --- a/src/host/lib/mars_task.c +++ b/src/host/lib/mars_task.c @@ -45,8 +45,7 @@ #include "mars/mars_error.h" #include "mars/mars_debug.h" -int mars_task_initialize(struct mars_context *mars, - struct mars_task_id *id, +int mars_task_initialize(struct mars_context *mars, struct mars_task_id *id, struct mars_task_params *params) { MARS_CHECK_RET(mars, MARS_ERROR_NULL); @@ -154,8 +153,7 @@ int mars_task_finalize(struct mars_task_ return MARS_SUCCESS; } -int mars_task_schedule(struct mars_task_id *id, - struct mars_task_args *args, +int mars_task_schedule(struct mars_task_id *id, struct mars_task_args *args, uint8_t priority) { MARS_CHECK_RET(id, MARS_ERROR_NULL); --- a/src/mpu/kernel/mars_kernel_registers.c +++ b/src/mpu/kernel/mars_kernel_registers.c @@ -39,9 +39,9 @@ void registers_save(void) { - /* push non-volatile registers on to the stack */ + /* push non-volatile registers on to the workload stack */ asm volatile ( - "lqa $75, process_stack;" + "lqa $75, workload_stack;" "stqd $80, -16($75);" "stqd $81, -32($75);" @@ -96,9 +96,9 @@ void registers_save(void) void registers_restore(void) { - /* pop non-volatile registers from saved process stack */ + /* pop non-volatile registers from saved workload stack */ asm volatile ( - "lqa $75, process_stack;" + "lqa $75, workload_stack;" "lqd $80, -16($75);" "lqd $81, -32($75);" --- a/src/mpu/kernel/mars_kernel_scheduler.c +++ b/src/mpu/kernel/mars_kernel_scheduler.c @@ -257,8 +257,8 @@ int scheduler(void) if (status == MARS_WORKLOAD_RESERVED_NONE) return MARS_KERNEL_STATUS_IDLE; - /* run the reserved workload */ - workload_run(); + /* execute the reserved workload */ + workload_exec(); /* release reservation of current workload */ release_workload(); --- a/src/mpu/kernel/mars_kernel_syscalls.c +++ b/src/mpu/kernel/mars_kernel_syscalls.c @@ -40,7 +40,7 @@ struct mars_kernel_syscalls kernel_syscalls; void *kernel_stack; -void *process_stack; +void *workload_stack; void mars_reentry(void) { @@ -115,31 +115,31 @@ void syscall_exit(void) "lqa $sp, kernel_stack;" ); - /* exit current process */ - workload_stop(); + /* exit current workload */ + workload_exit(); } void syscall_yield(void) { - /* save process stack and restore kernel stack */ + /* save workload stack and restore kernel stack */ asm volatile ( - "stqa $sp, process_stack;" + "stqa $sp, workload_stack;" "lqa $sp, kernel_stack;" ); - /* save current process */ - workload_save(); + /* yield current workload */ + workload_yield(); } void syscall_resume(void) { - /* restore current process */ - workload_restore(); + /* resume current workload */ + workload_resume(); - /* save kernel stack and restore process stack */ + /* save kernel stack and restore workload stack */ asm volatile ( "stqa $sp, kernel_stack;" - "lqa $sp, process_stack;" + "lqa $sp, workload_stack;" ); } @@ -165,9 +165,9 @@ int syscall_signal_send(uint16_t workloa void syscall_signal_wait(void) { - /* save process stack and restore kernel stack */ + /* save workload stack and restore kernel stack */ asm volatile ( - "stqa $sp, process_stack;" + "stqa $sp, workload_stack;" "lqa $sp, kernel_stack;" ); --- a/src/mpu/kernel/mars_kernel_task.c +++ b/src/mpu/kernel/mars_kernel_task.c @@ -38,9 +38,9 @@ #include #include "mars/mars_kernel.h" -extern void *process_stack; +extern void *workload_stack; -void task_run(struct mars_task_context *task) +void task_exec(struct mars_task_context *task) { MARS_ASSERT(task); @@ -62,19 +62,19 @@ void task_run(struct mars_task_context * } } -void task_stop(struct mars_task_context *task) +void task_exit(struct mars_task_context *task) { MARS_ASSERT(task); } -void task_save(struct mars_task_context *task) +void task_yield(struct mars_task_context *task) { MARS_ASSERT(task); MARS_ASSERT(task->context_save_area); MARS_ASSERT(task->context_save_size); - /* save process stack pointer */ - task->stack = (uint32_t)process_stack; + /* save workload stack pointer */ + task->stack = (uint32_t)workload_stack; /* dma context into context save area in host storage */ mars_dma_large_put_and_wait((void *)task->vaddr, @@ -83,14 +83,14 @@ void task_save(struct mars_task_context MARS_DMA_TAG); } -void task_restore(struct mars_task_context *task) +void task_resume(struct mars_task_context *task) { MARS_ASSERT(task); MARS_ASSERT(task->context_save_area); MARS_ASSERT(task->context_save_size); - /* restore process stack pointer */ - process_stack = (void *)task->stack; + /* restore workload stack pointer */ + workload_stack = (void *)task->stack; /* dma context to mpu storage from context save area in host storage */ mars_dma_large_get_and_wait((void *)task->vaddr, --- a/src/mpu/kernel/mars_kernel_workload.c +++ b/src/mpu/kernel/mars_kernel_workload.c @@ -60,7 +60,7 @@ struct mars_workload_context *workload_g return &workload; } -void workload_run(void) +void workload_exec(void) { /* set current workload state to running */ workload_state = MARS_WORKLOAD_STATE_RUNNING; @@ -68,12 +68,12 @@ void workload_run(void) /* workload type specific handling */ switch (workload_type) { case MARS_WORKLOAD_TYPE_TASK: - task_run((struct mars_task_context *)&workload); + task_exec((struct mars_task_context *)&workload); break; } } -void workload_stop(void) +void workload_exit(void) { /* set current workload state to finished */ workload_state = MARS_WORKLOAD_STATE_FINISHED; @@ -81,12 +81,12 @@ void workload_stop(void) /* workload type specific handling */ switch (workload_type) { case MARS_WORKLOAD_TYPE_TASK: - task_stop((struct mars_task_context *)&workload); + task_exit((struct mars_task_context *)&workload); break; } } -void workload_save(void) +void workload_yield(void) { /* set current workload state to ready */ workload_state = MARS_WORKLOAD_STATE_READY; @@ -97,13 +97,13 @@ void workload_save(void) /* save non-volatile registers */ registers_save(); - /* save the task context to main memory */ - task_save((struct mars_task_context *)&workload); + /* yield the task context */ + task_yield((struct mars_task_context *)&workload); break; } } -void workload_restore(void) +void workload_resume(void) { /* set current workload state to running */ workload_state = MARS_WORKLOAD_STATE_RUNNING; @@ -111,8 +111,8 @@ void workload_restore(void) /* workload type specific handling */ switch (workload_type) { case MARS_WORKLOAD_TYPE_TASK: - /* restore the task context from main memory */ - task_restore((struct mars_task_context *)&workload); + /* resume the task context */ + task_resume((struct mars_task_context *)&workload); /* restore non-volatile registers */ registers_restore(); @@ -289,8 +289,8 @@ void workload_signal_wait(void) /* save non-volatile registers */ registers_save(); - /* save the task context to main memory */ - task_save((struct mars_task_context *)&workload); + /* yield the task context */ + task_yield((struct mars_task_context *)&workload); break; } }