Added a callback_job constructor supporting custom priorities
This commit is contained in:
@@ -88,6 +88,11 @@ struct private_callback_job_t {
|
|||||||
* without risking that it gets freed too early during destruction.
|
* without risking that it gets freed too early during destruction.
|
||||||
*/
|
*/
|
||||||
sem_t *terminated;
|
sem_t *terminated;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Priority of this job
|
||||||
|
*/
|
||||||
|
job_priority_t prio;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -230,15 +235,15 @@ METHOD(job_t, execute, void,
|
|||||||
METHOD(job_t, get_priority, job_priority_t,
|
METHOD(job_t, get_priority, job_priority_t,
|
||||||
private_callback_job_t *this)
|
private_callback_job_t *this)
|
||||||
{
|
{
|
||||||
return JOB_PRIO_MEDIUM;
|
return this->prio;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Described in header.
|
* Described in header.
|
||||||
*/
|
*/
|
||||||
callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
callback_job_t *callback_job_create_with_prio(callback_job_cb_t cb, void *data,
|
||||||
callback_job_cleanup_t cleanup,
|
callback_job_cleanup_t cleanup, callback_job_t *parent,
|
||||||
callback_job_t *parent)
|
job_priority_t prio)
|
||||||
{
|
{
|
||||||
private_callback_job_t *this;
|
private_callback_job_t *this;
|
||||||
|
|
||||||
@@ -258,6 +263,7 @@ callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
|||||||
.children = linked_list_create(),
|
.children = linked_list_create(),
|
||||||
.parent = (private_callback_job_t*)parent,
|
.parent = (private_callback_job_t*)parent,
|
||||||
.destroyable = condvar_create(CONDVAR_TYPE_DEFAULT),
|
.destroyable = condvar_create(CONDVAR_TYPE_DEFAULT),
|
||||||
|
.prio = prio,
|
||||||
);
|
);
|
||||||
|
|
||||||
/* register us at parent */
|
/* register us at parent */
|
||||||
@@ -271,3 +277,13 @@ callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
|||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Described in header.
|
||||||
|
*/
|
||||||
|
callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
||||||
|
callback_job_cleanup_t cleanup,
|
||||||
|
callback_job_t *parent)
|
||||||
|
{
|
||||||
|
return callback_job_create_with_prio(cb, data, cleanup, parent,
|
||||||
|
JOB_PRIO_MEDIUM);
|
||||||
|
}
|
||||||
|
|||||||
@@ -120,4 +120,20 @@ callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
|||||||
callback_job_cleanup_t cleanup,
|
callback_job_cleanup_t cleanup,
|
||||||
callback_job_t *parent);
|
callback_job_t *parent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a callback job, with priority.
|
||||||
|
*
|
||||||
|
* Same as callback_job_create(), but with different priorities than default.
|
||||||
|
*
|
||||||
|
* @param cb callback to call from the processor
|
||||||
|
* @param data user data to supply to callback
|
||||||
|
* @param cleanup destructor for data on destruction, or NULL
|
||||||
|
* @param parent parent of this job
|
||||||
|
* @param prio job priority
|
||||||
|
* @return callback_job_t object
|
||||||
|
*/
|
||||||
|
callback_job_t *callback_job_create_with_prio(callback_job_cb_t cb, void *data,
|
||||||
|
callback_job_cleanup_t cleanup, callback_job_t *parent,
|
||||||
|
job_priority_t prio);
|
||||||
|
|
||||||
#endif /** CALLBACK_JOB_H_ @}*/
|
#endif /** CALLBACK_JOB_H_ @}*/
|
||||||
|
|||||||
Reference in New Issue
Block a user