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

📄 directory.h

📁 nachos系统作业 实现线程系统 实现一个电梯模拟 附实验报告
💻 H
字号:
// directory.h //	Data structures to manage a UNIX-like directory of file names.// //      A directory is a table of pairs: <file name, sector #>,//	giving the name of each file in the directory, and //	where to find its file header (the data structure describing//	where to find the file's data blocks) on disk.////      We assume mutual exclusion is provided by the caller.//// 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.#include "copyright.h"#ifndef DIRECTORY_H#define DIRECTORY_H#include "openfile.h"#define FileNameMaxLen 		9	// for simplicity, we assume 					// file names are <= 9 characters long// The following class defines a "directory entry", representing a file// in the directory.  Each entry gives the name of the file, and where// the file's header is to be found on disk.//// Internal data structures kept public so that Directory operations can// access them directly.class DirectoryEntry {  public:    bool inUse;				// Is this directory entry in use?    int sector;				// Location on disk to find the 					//   FileHeader for this file     char name[FileNameMaxLen + 1];	// Text name for file, with +1 for 					// the trailing '\0'};// The following class defines a UNIX-like "directory".  Each entry in// the directory describes a file, and where to find it on disk.//// The directory data structure can be stored in memory, or on disk.// When it is on disk, it is stored as a regular Nachos file.//// The constructor initializes a directory structure in memory; the// FetchFrom/WriteBack operations shuffle the directory information// from/to disk. class Directory {  public:    Directory(int size); 		// Initialize an empty directory					// with space for "size" files    ~Directory();			// De-allocate the directory    void FetchFrom(OpenFile *file);  	// Init directory contents from disk    void WriteBack(OpenFile *file);	// Write modifications to 					// directory contents back to disk    int Find(char *name);		// Find the sector number of the 					// FileHeader for file: "name"    bool Add(char *name, int newSector);  // Add a file name into the directory    bool Remove(char *name);		// Remove a file from the directory    void List();			// Print the names of all the files					//  in the directory    void Print();			// Verbose print of the contents					//  of the directory -- all the file					//  names and their contents.  private:    int tableSize;			// Number of directory entries    DirectoryEntry *table;		// Table of pairs: 					// <file name, file header location>     int FindIndex(char *name);		// Find the index into the directory 					//  table corresponding to "name"};#endif // DIRECTORY_H

⌨️ 快捷键说明

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