reformat code and job array
This commit is contained in:
parent
a665ccd4fe
commit
9ff857db9f
64 changed files with 1497 additions and 2476 deletions
|
|
@ -18,9 +18,7 @@ vtask_t* vtask_alloc()
|
|||
return task;
|
||||
}
|
||||
|
||||
int vtask_init(vtask_t* task,
|
||||
vtask_func_t entry,
|
||||
endpoint_t* ep)
|
||||
int vtask_init(vtask_t* task, vtask_func_t entry, endpoint_t* ep)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
|
@ -54,10 +52,8 @@ void vcpu_idle(vcpu_t* vcpu)
|
|||
vtaskmgr_t* vtaskmgr = (vtaskmgr_t*)vcpu->owner;
|
||||
|
||||
vcpu->task = NULL;
|
||||
cbuf_put(&(vtaskmgr->wbuf),
|
||||
(void*)&(vcpu->cpuid));
|
||||
cbuf_get(&(vcpu->wbuf),
|
||||
(void*)&(vcpu->task));
|
||||
cbuf_put(&(vtaskmgr->wbuf), (void*)&(vcpu->cpuid));
|
||||
cbuf_get(&(vcpu->wbuf), (void*)&(vcpu->task));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -104,9 +100,7 @@ static void* vcpu_entry(void* arg)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int vcpu_init(vcpu_t* vcpu,
|
||||
int cpuid,
|
||||
void* owner)
|
||||
int vcpu_init(vcpu_t* vcpu, int cpuid, void* owner)
|
||||
{
|
||||
vcpu->state = VCPU_IDLE;
|
||||
vcpu->vcpu = 0;
|
||||
|
|
@ -122,8 +116,7 @@ int vcpu_start(vcpu_t* vcpu)
|
|||
{
|
||||
int rc;
|
||||
|
||||
rc = pthread_create(&(vcpu->vcpu), NULL,
|
||||
&vcpu_entry, vcpu);
|
||||
rc = pthread_create(&(vcpu->vcpu), NULL, &vcpu_entry, vcpu);
|
||||
if (rc != 0) {
|
||||
vcpu->state = VCPU_ERR;
|
||||
return -errno;
|
||||
|
|
@ -166,8 +159,7 @@ static void taskq_item_killer(data_item_t* it)
|
|||
}
|
||||
}
|
||||
|
||||
int vtaskmgr_init(vtaskmgr_t* vtaskmgr,
|
||||
int nvcpus)
|
||||
int vtaskmgr_init(vtaskmgr_t* vtaskmgr, int nvcpus)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -177,23 +169,18 @@ int vtaskmgr_init(vtaskmgr_t* vtaskmgr,
|
|||
|
||||
vtaskmgr->dispatcher = 0;
|
||||
vtaskmgr->n_vcpus = nvcpus;
|
||||
vtaskmgr->vcpus = (vcpu_t*)calloc(nvcpus,
|
||||
sizeof(vcpu_t));
|
||||
vtaskmgr->vcpus = (vcpu_t*)calloc(nvcpus, sizeof(vcpu_t));
|
||||
if (vtaskmgr->vcpus == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
for (i = 0; i < nvcpus; i++) {
|
||||
vcpu_init(&(vtaskmgr->vcpus[i]),
|
||||
i, vtaskmgr);
|
||||
vcpu_init(&(vtaskmgr->vcpus[i]), i, vtaskmgr);
|
||||
}
|
||||
|
||||
cbuf_init(&(vtaskmgr->wbuf),
|
||||
nvcpus, sizeof(int));
|
||||
cbuf_init(&(vtaskmgr->wtbuf),
|
||||
1, sizeof(int));
|
||||
cbuf_init(&(vtaskmgr->wbuf), nvcpus, sizeof(int));
|
||||
cbuf_init(&(vtaskmgr->wtbuf), 1, sizeof(int));
|
||||
|
||||
dataq_init(&(vtaskmgr->taskq),
|
||||
taskq_item_killer);
|
||||
dataq_init(&(vtaskmgr->taskq), taskq_item_killer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -207,8 +194,7 @@ static vcpu_t* pick_idle_vcpu(vtaskmgr_t* vtaskmgr)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TRACE("%s pick idle cpu #%d",
|
||||
__func__, i);
|
||||
TRACE("%s pick idle cpu #%d", __func__, i);
|
||||
|
||||
return &(vtaskmgr->vcpus[i]);
|
||||
}
|
||||
|
|
@ -224,8 +210,7 @@ static int vtask_eligible(data_item_t* data)
|
|||
}
|
||||
|
||||
eligible = !(endpoint_is_task_blocked(task->ctx.ep));
|
||||
TRACE("%s vtask %p is %s",
|
||||
__func__, task,
|
||||
TRACE("%s vtask %p is %s", __func__, task,
|
||||
eligible ? "eligible" : "not eligible");
|
||||
|
||||
return eligible;
|
||||
|
|
@ -246,11 +231,9 @@ static vtask_t* pick_eligible_task(vtaskmgr_t* vtaskmgr)
|
|||
return task;
|
||||
}
|
||||
|
||||
static int bind_vtask(vtask_t* task,
|
||||
vcpu_t* vcpu)
|
||||
static int bind_vtask(vtask_t* task, vcpu_t* vcpu)
|
||||
{
|
||||
TRACE("binding task %p to cpu#%d\n",
|
||||
task, vcpu->cpuid);
|
||||
TRACE("binding task %p to cpu#%d\n", task, vcpu->cpuid);
|
||||
|
||||
if (task != NULL) {
|
||||
endpoint_block_tasks(task->ctx.ep);
|
||||
|
|
@ -294,8 +277,8 @@ int vtaskmgr_start(vtaskmgr_t* vtaskmgr)
|
|||
{
|
||||
int i, rc;
|
||||
|
||||
rc = pthread_create(&(vtaskmgr->dispatcher), NULL,
|
||||
&vdispatcher_entry, vtaskmgr);
|
||||
rc = pthread_create(&(vtaskmgr->dispatcher), NULL, &vdispatcher_entry,
|
||||
vtaskmgr);
|
||||
if (rc != 0) {
|
||||
return -errno;
|
||||
}
|
||||
|
|
@ -345,14 +328,12 @@ void vtaskmgr_fini(vtaskmgr_t* vtaskmgr)
|
|||
return;
|
||||
}
|
||||
|
||||
int vtask_enq(vtaskmgr_t* vtaskmgr,
|
||||
vtask_t* task)
|
||||
int vtask_enq(vtaskmgr_t* vtaskmgr, vtask_t* task)
|
||||
{
|
||||
int rc = 0;
|
||||
ioctx_ref(&(task->ctx));
|
||||
|
||||
rc = dataq_enq(&(vtaskmgr->taskq),
|
||||
&(task->ctx.link));
|
||||
rc = dataq_enq(&(vtaskmgr->taskq), &(task->ctx.link));
|
||||
if (rc >= 0) {
|
||||
/* wake up task dispatcher */
|
||||
task->owner = vtaskmgr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue