mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-17 10:46:09 +08:00
Update to FreeBSD head 2017-08-01
Git mirror commit f5002f5e5f78cae9f0269d812dc0aedb0339312c. Update #3472.
This commit is contained in:
@@ -316,8 +316,8 @@ taskqueue_timeout_func(void *arg)
|
||||
}
|
||||
|
||||
int
|
||||
taskqueue_enqueue_timeout(struct taskqueue *queue,
|
||||
struct timeout_task *timeout_task, int ticks)
|
||||
taskqueue_enqueue_timeout_sbt(struct taskqueue *queue,
|
||||
struct timeout_task *timeout_task, sbintime_t sbt, sbintime_t pr, int flags)
|
||||
{
|
||||
int res;
|
||||
|
||||
@@ -333,7 +333,7 @@ taskqueue_enqueue_timeout(struct taskqueue *queue,
|
||||
/* Do nothing */
|
||||
TQ_UNLOCK(queue);
|
||||
res = -1;
|
||||
} else if (ticks == 0) {
|
||||
} else if (sbt == 0) {
|
||||
taskqueue_enqueue_locked(queue, &timeout_task->t);
|
||||
/* The lock is released inside. */
|
||||
} else {
|
||||
@@ -342,18 +342,27 @@ taskqueue_enqueue_timeout(struct taskqueue *queue,
|
||||
} else {
|
||||
queue->tq_callouts++;
|
||||
timeout_task->f |= DT_CALLOUT_ARMED;
|
||||
if (ticks < 0)
|
||||
ticks = -ticks; /* Ignore overflow. */
|
||||
if (sbt < 0)
|
||||
sbt = -sbt; /* Ignore overflow. */
|
||||
}
|
||||
if (ticks > 0) {
|
||||
callout_reset(&timeout_task->c, ticks,
|
||||
taskqueue_timeout_func, timeout_task);
|
||||
if (sbt > 0) {
|
||||
callout_reset_sbt(&timeout_task->c, sbt, pr,
|
||||
taskqueue_timeout_func, timeout_task, flags);
|
||||
}
|
||||
TQ_UNLOCK(queue);
|
||||
}
|
||||
return (res);
|
||||
}
|
||||
|
||||
int
|
||||
taskqueue_enqueue_timeout(struct taskqueue *queue,
|
||||
struct timeout_task *ttask, int ticks)
|
||||
{
|
||||
|
||||
return (taskqueue_enqueue_timeout_sbt(queue, ttask, ticks * tick_sbt,
|
||||
0, 0));
|
||||
}
|
||||
|
||||
static void
|
||||
taskqueue_task_nop_fn(void *context, int pending)
|
||||
{
|
||||
|
Reference in New Issue
Block a user