资源简介
pintos os 操作系统 参数传递 系统调用

代码片段和文件信息
#include “devices/timer.h“
#include
#include
#include
#include
#include “threads/interrupt.h“
#include “threads/io.h“
#include “threads/synch.h“
#include “threads/thread.h“
/* My Implementation */
#include “threads/alarm.h“
#include “threads/fixed-point.h“
/* == My Implementation */
/* See [8254] for hardware details of the 8254 timer chip. */
#if TIMER_FREQ < 19
#error 8254 timer requires TIMER_FREQ >= 19
#endif
#if TIMER_FREQ > 1000
#error TIMER_FREQ <= 1000 recommended
#endif
/* Number of timer ticks since OS booted. */
static int64_t ticks;
/* Number of loops per timer tick.
Initialized by timer_calibrate(). */
static unsigned loops_per_tick;
static intr_handler_func timer_interrupt;
static bool too_many_loops (unsigned loops);
static void busy_wait (int64_t loops);
static void real_time_sleep (int64_t num int32_t denom);
static void real_time_delay (int64_t num int32_t denom);
/* Sets up the 8254 Programmable Interval Timer (PIT) to
interrupt PIT_FREQ times per second and registers the
corresponding interrupt. */
void
timer_init (void)
{
/* 8254 input frequency divided by TIMER_FREQ rounded to
nearest. */
uint16_t count = (1193180 + TIMER_FREQ / 2) / TIMER_FREQ;
outb (0x43 0x34); /* CW: counter 0 LSB then MSB mode 2 binary. */
outb (0x40 count & 0xff);
outb (0x40 count >> 8);
intr_register_ext (0x20 timer_interrupt “8254 Timer“);
}
/* Calibrates loops_per_tick used to implement brief delays. */
void
timer_calibrate (void)
{
unsigned high_bit test_bit;
ASSERT (intr_get_level () == INTR_ON);
printf (“Calibrating timer... “);
/* Approximate loops_per_tick as the largest power-of-two
still less than one timer tick. */
loops_per_tick = 1u << 10;
while (!too_many_loops (loops_per_tick << 1))
{
loops_per_tick <<= 1;
ASSERT (loops_per_tick != 0);
}
/* Refine the next 8 bits of loops_per_tick. */
high_bit = loops_per_tick;
for (test_bit = high_bit >> 1; test_bit != high_bit >> 10; test_bit >>= 1)
if (!too_many_loops (high_bit | test_bit))
loops_per_tick |= test_bit;
printf (“%‘“PRIu64“ loops/s.\n“ (uint64_t) loops_per_tick * TIMER_FREQ);
}
/* Returns the number of timer ticks since the OS booted. */
int64_t
timer_ticks (void)
{
enum intr_level old_level = intr_disable ();
int64_t t = ticks;
intr_set_level (old_level);
barrier ();
return t;
}
/* Returns the number of timer ticks elapsed since THEN which
should be a value once returned by timer_ticks(). */
int64_t
timer_elapsed (int64_t then)
{
return timer_ticks () - then;
}
/* Sleeps for approximately TICKS timer ticks. Interrupts must
be turned on. */
void
timer_sleep (int64_t ticks)
{
/* Old Implementation
int64_t start = timer_ticks (); */
ASSERT (intr_get_level () == INTR_ON);
/* Old Implementation
while (timer_elapsed (start) < ticks)
thread_yield (); */
/* My Implementation */
set_alarm
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7245 2013-06-19 00:27 10112510138 高皆庆\devices\timer.c
文件 3684 2013-05-28 21:58 10112510138 高皆庆\Makefile.build
文件 927973 2013-06-19 20:12 10112510138 高皆庆\README.pdf
文件 23157 2013-06-19 00:27 10112510138 高皆庆\threads\thread.c
文件 6878 2013-06-19 00:27 10112510138 高皆庆\threads\thread.h
文件 6967 2013-06-19 13:44 10112510138 高皆庆\userprog\exception.c
文件 408 2013-06-19 00:27 10112510138 高皆庆\userprog\exception.h
文件 18856 2013-06-19 13:39 10112510138 高皆庆\userprog\process.c
文件 246 2013-06-19 00:27 10112510138 高皆庆\userprog\process.h
文件 10625 2013-06-19 13:39 10112510138 高皆庆\userprog\syscall.c
文件 143 2013-06-19 00:27 10112510138 高皆庆\userprog\syscall.h
目录 0 2013-06-19 02:56 10112510138 高皆庆\devices
目录 0 2013-06-19 13:47 10112510138 高皆庆\threads
目录 0 2013-06-19 13:45 10112510138 高皆庆\userprog
目录 0 2013-06-19 20:12 10112510138 高皆庆
----------- --------- ---------- ----- ----
1006182 15
- 上一篇:google earth 截图软件
- 下一篇:易语言DLL注入视频教程 很难得的
相关资源
- OSG 72集视频教程和资料140620
- Microsoft Forms 2.0107770
- AXURE移动端素材元件库68580
- Rational Rose Common破解文件
- ddos压力测试工具99657
- 双木三林_XMOS driver V4.6
- 联想H61主板BIOS升级F9KT58AUS支持22NM.i
- photoshop经典1000例
- Eeupdate.exe
- AMIDEDOS AMI
- Reparatory Effects of Nicotine on NMDA Recepto
- Apolipoprotein E4 Impairs in vivo Hippocampal
- Histamine excites rat lateral vestibular nucle
- Diltiazem augmented pentobarbital-induced LORR
- Lenovo Z460 SLIC2.1 LENOVO-29CN38WW(V2.15)
- 联想G400G500G490BIOS
- 升腾Win终端系统升级方法新版.doc
- Fabrication and all-optical poling characteris
- Rtx51_tiny_RTOS中文版.pdf
- Micrium.RTOS.1.0.0.pack
- Uninstall_Cortana_WINCLIENT.CN.rar
- ASUS BIOS 加NVME协议文件: Nvme.ffs NV
- 易语言post提交示例
- STM32基于rt_thread操作系统的SDHC卡文件
- Phoenix BIOS Editor.rar
- DOS播放器 QuickViewPro破解版
- HP笔记本BIOS丢失解决方法,DMI TOOLK
- Y450 BIOS白名单
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
评论
共有 条评论