mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Sortix now uses the Device class.
This class is very WIP and is just experimental.
This commit is contained in:
parent
e95eb60d31
commit
1026354e98
3 changed files with 26 additions and 25 deletions
|
@ -43,7 +43,7 @@ DEFINES:=$(DEFINES) -DINITRD
|
|||
CPPFLAGSRELEASE=-s -O3
|
||||
CPPFLAGSDEBUG=
|
||||
CPPFLAGS=-I.. $(CPUDEFINES) $(CPUFLAGS) -std=gnu++0x -Wall -Wextra -nostdlib -fno-builtin -nostartfiles -nodefaultlibs -fno-exceptions -fno-rtti -fno-stack-protector $(DEFINES) $(CPPFLAGSRELEASE)
|
||||
OBJS=$(CPUOBJS) kernel.o descriptor_tables.o isr.o time.o log.o iprintable.o panic.o keyboard.o memorymanagement.o scheduler.o syscall.o application.o pong.o sound.o pci.o uart.o conway.o test.o http.o vgaterminal.o serialterminal.o descriptors.o ../libmaxsi/libmaxsi-sortix.a
|
||||
OBJS=$(CPUOBJS) kernel.o descriptor_tables.o isr.o time.o log.o iprintable.o panic.o keyboard.o memorymanagement.o scheduler.o syscall.o application.o pong.o sound.o pci.o uart.o conway.o test.o http.o vgaterminal.o serialterminal.o descriptors.o device.o ../libmaxsi/libmaxsi-sortix.a
|
||||
JSOBJS:=$(subst .o,-js.o,$(OBJS))
|
||||
|
||||
all: sortix.bin
|
||||
|
|
|
@ -23,17 +23,19 @@
|
|||
******************************************************************************/
|
||||
|
||||
#include "platform.h"
|
||||
#include <libmaxsi/memory.h>
|
||||
#include "device.h"
|
||||
|
||||
namespace Sortix
|
||||
{
|
||||
void Device::close()
|
||||
bool Device::Close()
|
||||
{
|
||||
_refCount--;
|
||||
if ( _refCount == 0 )
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Device::Think()
|
||||
|
@ -52,5 +54,3 @@ namespace Sortix
|
|||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -33,33 +33,34 @@ namespace Sortix
|
|||
{
|
||||
public:
|
||||
// Flags
|
||||
const nat READABLE = (1<<0);
|
||||
const nat WRITABLE = (1<<1);
|
||||
const nat SEEKABLE = (1<<2);
|
||||
const nat SIZEABLE = (1<<3);
|
||||
const nat BLOCK = (1<<4);
|
||||
const nat FLAGMASK = ((1<<5)-1);
|
||||
static const nat READABLE = (1<<0);
|
||||
static const nat WRITABLE = (1<<1);
|
||||
static const nat SEEKABLE = (1<<2);
|
||||
static const nat SIZEABLE = (1<<3);
|
||||
static const nat BLOCK = (1<<4);
|
||||
static const nat FLAGMASK = ((1<<5)-1);
|
||||
|
||||
// Types
|
||||
const nat TYPEMASK = ~FLAGMASK;
|
||||
const nat STREAM = (1<<5);
|
||||
const nat BUFFER = (2<<5);
|
||||
const nat DIRECTORY = (3<<5);
|
||||
const nat FILESYSTEM = (4<<5);
|
||||
const nat NETWORK = (5<<5);
|
||||
const nat SOUND = (6<<5);
|
||||
const nat GRAPHICS = (7<<5);
|
||||
const nat MOUSE = (8<<5);
|
||||
const nat KEYBOARD = (9<<5);
|
||||
const nat PRINTER = (10<<5);
|
||||
const nat SCANNER = (11<<5);
|
||||
const nat OTHER = TYPEMASK;
|
||||
static const nat TYPEMASK = ~FLAGMASK;
|
||||
static const nat STREAM = (1<<5);
|
||||
static const nat BUFFER = (2<<5);
|
||||
static const nat DIRECTORY = (3<<5);
|
||||
static const nat FILESYSTEM = (4<<5);
|
||||
static const nat NETWORK = (5<<5);
|
||||
static const nat SOUND = (6<<5);
|
||||
static const nat GRAPHICS = (7<<5);
|
||||
static const nat MOUSE = (8<<5);
|
||||
static const nat KEYBOARD = (9<<5);
|
||||
static const nat PRINTER = (10<<5);
|
||||
static const nat SCANNER = (11<<5);
|
||||
static const nat VGABUFFER = (12<<5);
|
||||
static const nat OTHER = TYPEMASK;
|
||||
|
||||
public:
|
||||
volatile size_t _refCount;
|
||||
|
||||
public:
|
||||
Device() { RefCount = 1; }
|
||||
Device() { _refCount = 1; }
|
||||
virtual ~Device() { }
|
||||
|
||||
private:
|
||||
|
@ -80,7 +81,7 @@ namespace Sortix
|
|||
virtual nat Flags() = 0;
|
||||
|
||||
public:
|
||||
bool IsType(nat type) { return Flags() & TYPEMASK == type); }
|
||||
bool IsType(nat type) { return (Flags() & TYPEMASK) == type; }
|
||||
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue