Ошибка En / Dequeue произошла при планировании SRJF ЦП в программировании ядра Linux - PullRequest
0 голосов
/ 18 июня 2019

Я хочу сделать источник планирования SRJF.Но это не работает должным образом.Компиляция в порядке, но я не могу получить результаты, которые я ожидал правильно.Как я могу исправить или изменить?Я думаю, что часть enqueue и часть dequeue неверны.

struct sched_array {
  struct list_head list;
  struct task_struct task;
};

void enqueue_task(struct task_struct *p, struct sched_array *array)
{
  struct sched_array *new = (struct sched_array *) malloc( sizeof(struct sched_array) );
  p->array = new;
  new->task = p;
  list_add( &new->list, &array->list )
}

void dequeue_task(struct task_struct *p, struct sched_array *array)
{
  if (rq->curr = p)
  {
    rq->curr = NULL;
  }
  list_del(&(p->array->list));
}

1 Ответ

1 голос
/ 18 июня 2019

Я вижу здесь одну проблему:

  new->task = p;

Вы присваиваете p типа struct task_struct * task типа struct task_struct.

Уведомление pявляется указателем, тогда как task не является.

Может быть, вы имели в виду,

  new->task = *p;

Тем не менее нам нужен минимальный-воспроизводимый пример , чтобы полностью решить проблемы,

...