dequeue

 avatar
user_0531932
c_cpp
a year ago
1.4 kB
0
Indexable
Never
struct pcb_t *dequeue(struct queue_t *q)
{
        // printf("dequeue of non MLQ used\n");
        /* TODO: return a pcb whose priority is the highest
         * in the queue [q] and remember to remove it from q
         * */
        q->slot--;
        if(q->slot == 0) return NULL;       
        if (q->size != 0)
        {
                struct pcb_t *t_proc = q->proc[0];
                // int highest_priority = MAX_PRIO;
                // int i;
                // int max_idx = 0;
                // for (i = 0; i < q->size; i++)
                // {
                //         //printf("q->proc[i]->prio: %d\n", q->proc[i]->prio);
                //         if (q->proc[i]->prio < highest_priority)
                //         {
                //                 t_proc = q->proc[i];
                //                 highest_priority = q->proc[i]->prio;
                //                 //printf("highest_priority: %d\n", highest_priority);
                //                 max_idx = i;
                //         }
                // }

                //printf("highest_priority: %d\n", highest_priority);

                int i = 0;
                for (i = 0; i < q->size - 1; i++)
                {
                        q->proc[i] = q->proc[i + 1];
                }
                q->size--;
                return t_proc;
        }
        return NULL;
}