* without risking that it gets freed too early during destruction.
*/
sem_t *terminated;
+
+ /**
+ * Priority of this job
+ */
+ job_priority_t prio;
};
/**
METHOD(job_t, get_priority, job_priority_t,
private_callback_job_t *this)
{
- return JOB_PRIO_MEDIUM;
+ return this->prio;
}
/*
* 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)
+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)
{
private_callback_job_t *this;
.children = linked_list_create(),
.parent = (private_callback_job_t*)parent,
.destroyable = condvar_create(CONDVAR_TYPE_DEFAULT),
+ .prio = prio,
);
/* register us at parent */
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);
+}
callback_job_cleanup_t cleanup,
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_ @}*/