OSを作ってみよう (534レス)
上下前次1-新
28: 03/02/28 15:30 AAS
/*** NoName\include\sys\aspace.h ***/
#ifndef_ese_sys_aspace_h_
#define_ese_sys_aspace_h_
#definePageSize4096
#defineKernelAddressMin0x00000000
#defineKernelAddressMax0x7fffffff
#defineUserAddressMin0x80000000
#defineUserAddressMax0xffffffff
#defineASpaceProtUser0x1
#defineASpaceProtKernel0x2
省14
29: 03/02/28 15:31 AAS
/*** NoName\include\sys\aspace.h ***/
extern void aspace_initialize(void);
extern PageEntry *aspace_create(void);
extern int aspace_delete(PageEntry *page_table);
extern int aspace_map(PageEntry *page_table, unsigned int address, unsigned int size, char prot);
extern int aspace_unmap(PageEntry *page_table, unsigned int address, unsigned int size);
extern int aspace_read(PageEntry *page_table, unsigned int addr, void *buf, unsigned int size);
extern int aspace_write(PageEntry *page_table, unsigned int address, void *buf, unsigned int size);
extern int aspace_zero(PageEntry *page_table, unsigned int addr, unsigned int size);
#endif_ese_sys_aspace_h_
30: 03/02/28 15:32 AAS
/*** NoName\include\sys\core.h ***/
#ifndef_ese_sys_core_h_
#define_ese_sys_core_h_
extern void lock_cpu(void);
extern void unlock_cpu(void);
extern void dispatch(void);
extern void exit_and_dispatch(void);
extern void task_startup(void);
extern void syscall_entry(void);
extern void exception0_entry(void);
省6
31: 03/02/28 15:33 AAS
/*** NoName\include\sys\core.h ***/
extern void exception7_entry(void);
extern void exception8_entry(void);
extern void exception9_entry(void);
extern void exception10_entry(void);
extern void exception11_entry(void);
extern void exception12_entry(void);
extern void exception13_entry(void);
extern void exception14_entry(void);
extern void exception15_entry(void);
省5
32: 03/02/28 15:34 AAS
/*** NoName\include\sys\cpu.h ***/
#ifndef_ese_sys_cpu_h_
#define_ese_sys_cpu_h_
#defineTYPE_SEG_DATA0x00/* 0000データセグメント */
#defineTYPE_SEG_EXPAND0x04/* 0100 エクスパンドダウン */
#defineTYPE_SEG_WRITEABLE0x02/* 0010 書き込み可 */
#defineTYPE_SEG_ACCESSED0x01/* 0001 アクセスされたか? */
#defineTYPE_SEG_CODE0x08/* 1000 コードセグメント */
#defineTYPE_SEG_CONFORMING0x04/* 0100 コンフォーミング */
#defineTYPE_SEG_READABLE0x02/* 0010 読み取り可 */
省3
33: 03/02/28 15:35 AAS
/*** NoName\include\sys\cpu.h ***/
typedef struct {
unsignedlimit_L:16;
unsignedbase_L:24 __attribute__ ((packed));
unsignedtype:4;
unsigneds:1;
unsigneddpl:2;
unsignedp:1;
unsignedlimit_H:4;
unsignedavl:1;
省5
34: 03/02/28 15:36 AAS
/*** NoName\include\sys\cpu.h ***/
typedef struct {
unsignedoffset_L:16;
unsignedselector:16;
unsignedcopy:8;
unsignedtype:4;
unsigneds:1;
unsigneddpl:2;
unsignedp:1;
unsignedoffset_H:16;
省5
35: 03/02/28 15:37 AAS
/*** NoName\include\sys\cpu.h ***/
typedef struct {
unsignedlink;
unsignedesp0;
unsignedss0;
unsignedesp1;
unsignedss1;
unsignedesp2;
unsignedss2;
unsignedcr3;
省19
36: 03/02/28 15:37 AAS
/*** NoName\include\sys\cpu.h ***/
extern void make_seg_desc(SegDesc *desc, unsigned int addr, unsigned int limit, char type, char dpl);
extern void make_gate_desc(GateDesc *desc, int selector, void *entry, char type, char dpl);
extern void make_tss_desc(SegDesc *desc, unsigned int addr, unsigned int limit, char dpl);
extern void make_desc_ptr(DescPtr *ptr, unsigned int limit, void *base);
extern void cpu_initialize(void);
#endif_ese_sys_cpu_h_
37: 03/02/28 15:39 AAS
/*** NoName\include\sys\elf.h ***/
#ifndef_elf_h_
#define_elf_h_
#defineEI_MAG00
#defineEI_MAG11
#defineEI_MAG22
#defineEI_MAG33
#defineEI_CLASS4
#defineEI_DATA5
#defineEI_VERSION6
省7
38: 03/02/28 15:39 AAS
/*** NoName\include\sys\elf.h ***/
#defineIS_ELF(ehdr)((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
(ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
(ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
(ehdr).e_ident[EI_MAG3] == ELFMAG3)
typedefunsigned intElf32_Addr;
typedefunsigned shortElf32_Half;
typedefunsigned intElf32_Off;
typedefunsigned intElf32_Sword;
typedefunsigned intElf32_Word;
省1
39: 03/02/28 15:40 AAS
/*** NoName\include\sys\elf.h ***/
typedef struct {
unsigned chare_ident[EI_NIDENT];
Elf32_Halfe_type;
Elf32_Halfe_machine;
Elf32_Worde_version;
Elf32_Addre_entry;
Elf32_Offe_phoff;
Elf32_Offe_shoff;
Elf32_Worde_flags;
省7
40: 03/02/28 15:40 AAS
/*** NoName\include\sys\elf.h ***/
typedef struct {
Elf32_Wordsh_name;
Elf32_Wordsh_type;
Elf32_Wordsh_flags;
Elf32_Addrsh_addr;
Elf32_Offsh_offset;
Elf32_Sizesh_size;
Elf32_Wordsh_link;
Elf32_Wordsh_info;
省3
41: 03/02/28 15:41 AAS
/*** NoName\include\sys\elf.h ***/
typedef struct {
Elf32_Wordp_type;
Elf32_Offp_offset;
Elf32_Addrp_vaddr;
Elf32_Addrp_paddr;
Elf32_Sizep_filesz;
Elf32_Sizep_memsz;
Elf32_Wordp_flags;
Elf32_Sizep_align;
省2
42: 03/02/28 15:42 AAS
/*** NoName\include\sys\kernel.h ***/
#ifndef_ese_sys_kernel_h_
#define_ese_sys_kernel_h_
#include <sys/typedef.h>
#include <sys/task.h>
#include <sys/memory.h>
#include <sys/aspace.h>
#include <sys/core.h>
#include <sys/cpu.h>
#include <sys/util.h>
省1
43: 03/02/28 15:42 AAS
/*** NoName\include\sys\memory.h ***/
#ifndef_ese_sys_memory_h_
#define_ese_sys_memory_h_
extern unsigned int memory_upper;
extern unsigned int num_free_page;
extern void memory_initialize(unsigned int upper);
extern void reserve_memory(unsigned int start, unsigned int size);
extern void *alloc_page(void);
extern void free_page(void *page);
extern sys_grow_heap(Task *self, int size);
省1
44: 03/02/28 15:44 AAS
/*** NoName\include\sys\multiboot.h ***/
/* multiboot.h - the header for Multiboot */
/* Copyright (C) 1999 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
省4
45: 03/02/28 15:44 AAS
/*** NoName\include\sys\multiboot.h ***/
/* Macros. */
/* The magic number for the Multiboot header. */
#define MULTIBOOT_HEADER_MAGIC0x1BADB002
/* The flags for the Multiboot header. */
#define MULTIBOOT_HEADER_FLAGS0x00010003
/* The magic number passed by a Multiboot-compliant boot loader. */
#define MULTIBOOT_BOOTLOADER_MAGIC0x2BADB002
省8
46: 03/02/28 15:45 AAS
/*** NoName\include\sys\multiboot.h ***/
#ifndef ASM
/* Do not include here in boot.S. */
/* Types. */
/* The Multiboot header. */
typedef struct multiboot_header
{
unsigned long magic;
unsigned long flags;
unsigned long checksum;
省6
47: 03/02/28 15:45 AAS
/*** NoName\include\sys\multiboot.h ***/
/* The symbol table for a.out. */
typedef struct aout_symbol_table
{
unsigned long tabsize;
unsigned long strsize;
unsigned long addr;
unsigned long reserved;
} aout_symbol_table_t;
/* The section header table for ELF. */
省7
上下前次1-新書関写板覧索設栞歴
あと 487 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.007s