作业帮 > 综合 > 作业

Linux 驱动设计 In this assignment,your team is required to devel

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 01:40:50
Linux 驱动设计
In this assignment,your team is required to develop
1.A device driver for shared queues which perform the basis enqueue and dequeue operations and
record the time of the operations.
2.A test program that initiates multiple threads to access the shared queues.
When the device driver is installed,two queue devices,named “Tqueue1” and “Tqueue2”,will be
created and added to Linux device file systems.The two devices act as FIFO (first-in-first-out) queues
where tokens can be enqueued and dequeued.Each token is represented by token id which is an
integer.Each queue can be shared by multiple tasks (processes or threads) concurrently and should be
implemented as a ring buffer of size 5.The device driver should implement the following file operations:
• open:to open a device (either Tqueue1 or Tqueue2)
• write:to enqueue a token to the device.The time of enqueue should be attached to the token
and saved in the queue device.If the queue is full,-1 will be returned.
• read:to dequeue a token from the device.The data returned includes token id,arrival
timestamp,and departure timestamp.If the queue is empty,-1 will be returned.
• release:to release the file structure.
Timestamp is a struct of 3 bytes for hour,minute,and second.It can be read from the real-time
clock module of Intel I/O controller hub ICH8.
In the test program,you will create 6 threads:
• Two sender threads,sender1 and sender2,which create one token at a time and enqueue it to
Tqueue1.They then take a nap (sleep) for a random interval before sending the next token.If an
enqueue operation fails,the sender retries it after a nap.When a taken is created,it is assigned
with a global sequence number as the token id.
• Two router threads,router1 and router 2,which repeat the operations of dequeuing a taken
from Tqueue1,printing out the token id and the timestamps,sending the taken to Tqueue 2,and
taking a nap.If either dequeue or enqueue operations fail,the router retries the operation after
a nap.
• Two receiver thread,receiver1 and receiver2,which repeat the operations of dequeuing a taken
from Tqueue2,printing out the token id and the timestamps,and taking a nap.If a dequeue
operation fails,the receiver retries the operation after a nap.
All threads exit after completing the operations for 100 tokens.The time for a nap is an interval
distributed randomly between 100ms and 500ms.
自己能做嘛