免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2442 | 回复: 3
打印 上一主题 下一主题

A Device Driver for Shared Queues with Timestamping [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-14 22:24 |只看该作者 |倒序浏览
以我的理解,大致是写一个共享队列读写的module,加两个字符设备,然后用一个多线程的测试应用去测试。如果有理解不对的地方请指正。主要不太明白的地方有timestamp和这个token,token id如何实现。希望前辈给讲解一下。谢谢
(希望似懂非懂的童鞋不要用很确定的语气讲,容易误导其他人,谢谢)

Assignment Objectives
1. To learn the basic programming technique for module and device driver in Linux kernel.
2. To learn thread programming in Linux.
3. To access RTC module in x86 architecture.
Project Assignment
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.

论坛徽章:
0
2 [报告]
发表于 2011-02-15 22:22 |只看该作者
怎么没人帮助一下呢?

论坛徽章:
0
3 [报告]
发表于 2011-02-16 00:12 |只看该作者
这个是哪里来的?

论坛徽章:
0
4 [报告]
发表于 2011-02-16 21:15 |只看该作者
这个是哪里来的?
chobit_s 发表于 2011-02-16 00:12



    别人的作业 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP