[SOLVED] CS代考计算机代写 #ifndef DEVICES_INTQ_H

30 $

File Name: CS代考计算机代写_#ifndef_DEVICES_INTQ_H.zip
File Size: 433.32 KB

SKU: 3606550570 Category: Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Or Upload Your Assignment Here:


#ifndef DEVICES_INTQ_H
#define DEVICES_INTQ_H

#include “threads/interrupt.h”
#include “threads/lock.h”

/* An “interrupt queue”, a circular buffer shared between
kernel threads and external interrupt handlers.

Interrupt queue functions can be called from kernel threads or
from external interrupt handlers.Except for intq_init(),
interrupts must be off in either case.

The interrupt queue has the structure of a “monitor”.Locks
and condition variables from threads/synch.h cannot be used in
this case, as they normally would, because they can only
protect kernel threads from one another, not from interrupt
handlers. */

/* Queue buffer size, in bytes. */
#define INTQ_BUFSIZE 64

/* A circular queue of bytes. */
struct intq
{
/* Waiting threads. */
struct lock lock; /* Only one thread may wait at once. */
struct thread *not_full;/* Thread waiting for not-full condition. */
struct thread *not_empty; /* Thread waiting for not-empty condition. */

/* Queue. */
uint8_t buf[INTQ_BUFSIZE];/* Buffer. */
int head; /* New data is written here. */
int tail; /* Old data is read here. */
};

void intq_init (struct intq *);
bool intq_empty (const struct intq *);
bool intq_full (const struct intq *);
uint8_t intq_getc (struct intq *);
void intq_putc (struct intq *, uint8_t);

#endif /* devices/intq.h */

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] CS代考计算机代写 #ifndef DEVICES_INTQ_H
30 $