Page MenuHomeFreeBSD

D49808.id153605.diff
No OneTemporary

D49808.id153605.diff

Index: sys/compat/linuxkpi/common/src/linux_schedule.c
===================================================================
--- sys/compat/linuxkpi/common/src/linux_schedule.c
+++ sys/compat/linuxkpi/common/src/linux_schedule.c
@@ -38,6 +38,18 @@
#include <linux/spinlock.h>
#include <linux/wait.h>
+static int
+convert_to_sleepqueue_timeout(int timeout)
+{
+ /* range check timeout */
+ if (timeout < 1)
+ timeout = 1;
+ else if (timeout == MAX_SCHEDULE_TIMEOUT)
+ timeout = 0;
+
+ return (timeout);
+}
+
static int
linux_add_to_sleepqueue(void *wchan, struct task_struct *task,
const char *wmesg, int timeout, int state)
@@ -258,13 +270,8 @@
if (lock != NULL)
spin_unlock_irq(lock);
- /* range check timeout */
- if (timeout < 1)
- timeout = 1;
- else if (timeout == MAX_SCHEDULE_TIMEOUT)
- timeout = 0;
-
task = current;
+ timeout = convert_to_sleepqueue_timeout(timeout);
sleepq_lock(task);
if (atomic_read(&task->state) != TASK_WAKING) {
@@ -289,12 +296,7 @@
int remainder;
task = current;
-
- /* range check timeout */
- if (timeout < 1)
- timeout = 1;
- else if (timeout == MAX_SCHEDULE_TIMEOUT)
- timeout = 0;
+ timeout = convert_to_sleepqueue_timeout(timeout);
remainder = ticks + timeout;
@@ -350,13 +352,9 @@
void *wchan;
int ret;
- /* range check timeout */
- if (timeout < 1)
- timeout = 1;
- else if (timeout == MAX_SCHEDULE_TIMEOUT)
- timeout = 0;
-
task = current;
+ timeout = convert_to_sleepqueue_timeout(timeout);
+
wchan = bit_to_wchan(word, bit);
for (;;) {
sleepq_lock(wchan);

File Metadata

Mime Type
text/plain
Expires
Thu, Aug 20, 7:34 AM (8 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36983393
Default Alt Text
D49808.id153605.diff (1 KB)

Event Timeline