⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syscall.h

📁 LINUX 下NACHOS 系统的页面调度算法的实现
💻 H
字号:
/* syscalls.h  * 	Nachos system call interface.  These are Nachos kernel operations * 	that can be invoked from user programs, by trapping to the kernel *	via the "syscall" instruction. * *	This file is included by user programs and by the Nachos kernel.  * * Copyright (c) 1992-1993 The Regents of the University of California. * All rights reserved.  See copyright.h for copyright notice and limitation  * of liability and disclaimer of warranty provisions. */#ifndef SYSCALLS_H#define SYSCALLS_H#include "copyright.h"/* system call codes -- used by the stubs to tell the kernel which system call * is being asked for */#define SC_Halt		0#define SC_Exit		1#define SC_Exec		2#define SC_Join		3#define SC_Create	4#define SC_Open		5#define SC_Read		6#define SC_Write	7#define SC_Close	8#define SC_Fork		9#define SC_Yield	10#define SC_TestCase     11#ifndef IN_ASM/* The system call interface.  These are the operations the Nachos * kernel needs to support, to be able to run user programs. * * Each of these is invoked by a user program by simply calling the  * procedure; an assembly language stub stuffs the system call code * into a register, and traps to the kernel.  The kernel procedures * are then invoked in the Nachos kernel, after appropriate error checking,  * from the system call entry point in exception.cc. *//* Stop Nachos, and print out performance stats */void Halt();		 /* Address space control operations: Exit, Exec, and Join *//* This user program is done (status = 0 means exited normally). */void Exit(int status);	/* A unique identifier for an executing user program (address space) */typedef int SpaceId;	 /* Run the executable, stored in the Nachos file "name", and return the  * address space identifier */SpaceId Exec(char *name); /* Only return once the the user program "id" has finished.   * Return the exit status. */int Join(SpaceId id); 	 /* File system operations: Create, Open, Read, Write, Close * These functions are patterned after UNIX -- files represent * both files *and* hardware I/O devices. * * If this assignment is done before doing the file system assignment, * note that the Nachos file system has a stub implementation, which * will work for the purposes of testing out these routines. */ /* A unique identifier for an open Nachos file. */typedef int OpenFileId;	/* when an address space starts up, it has two open files, representing  * keyboard input and display output (in UNIX terms, stdin and stdout). * Read and Write can be used directly on these, without first opening * the console device. */#define ConsoleInput	0  #define ConsoleOutput	1   /* Create a Nachos file, with "name" */void Create(char *name);/* Open the Nachos file "name", and return an "OpenFileId" that can  * be used to read and write to the file. */OpenFileId Open(char *name);/* Write "size" bytes from "buffer" to the open file. */void Write(char *buffer, int size, OpenFileId id);/* Read "size" bytes from the open file into "buffer".   * Return the number of bytes actually read -- if the open file isn't * long enough, or if it is an I/O device, and there aren't enough  * characters to read, return whatever is available (for I/O devices,  * you should always wait until you can return at least one character). */int Read(char *buffer, int size, OpenFileId id);/* Close the file, we're done reading and writing to it. */void Close(OpenFileId id);/* User-level thread operations: Fork and Yield.  To allow multiple * threads to run within a user program.  *//* Fork a thread to run a procedure ("func") in the *same* address space  * as the current thread. */void Fork(void (*func)());/* Yield the CPU to another runnable thread, whether in this address space  * or not.  */void Yield();		/* Invoke kernel-level test case code (for MP3) */void TestCase(int step);#endif /* IN_ASM */#endif /* SYSCALL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -