Go to the FreeLists Home Page Home Signup Help Login
 



[openbeosstorage] || [Date Prev] [02-2002 Date Index] [Date Next] || [Thread Prev] [02-2002 Thread Index] [Thread Next]

[openbeosstorage] Re: Kernel Interface Design

  • From: Keith Poole <keef@xxxxxxxxxxxxxxx>
  • To: openbeosstorage@xxxxxxxxxxxxx
  • Date: Wed, 13 Feb 2002 21:10:54 +0000
The reason I combined the read/readdir functions is that the NewOS 
kernel does it this way (see bootfs.c).  The only problem with not 
managing our own file descriptors, is how do we know if its a file or 
directory?  (mind you, thinking about it, since sizeof(int) == 
sizeof(DIR*) - we could just check its size:
if (fd <256) {
    // File
} else {
   // Directory
}

since addresses in the range 0-255 are part of the kernel.

        What do you think?

            Keith

(PS. I'll use the exception class as well)

Tyler Dauwalder wrote:

>
>>My attempt at the emulator code (haven't had chance to try it under BeOS 
>>yet - but it compiles under gcc).  Any comments on this one?
>>
>
>That's not bad. I don't think we need to manage our own file descriptors
>now (see my comment in the next paragraph). Combining read and
>readdir into one function is an interesting idea. 
>
>>Data types - open modes are ints if you use open rather than fopen 
>>(O_CREAT, etc) - see the attached example
>>
>
>Hmm, good observation. That's what I get for not actually using
>POSIX funtions ;-). In light of that, I'm thinking we ought to just
>pass the ints returned by POSIX-open() and kernel-open() then,
>instead of managing our own file descriptors. The less code
>between us and the architecture below us, the better.
>
>>I think Tyler's right about throwing exceptions - this version doesn't, 
>>but it would make the code clearer if it did.
>>
>
>I wrote up the beginnings of an exception class we can use as
>the basis for our error handling. It takes an integer error code and
>a string error message. If you compile it with debug support in,
>it automatically prints out the error message to stdout when an
>exception is created. 
>
>I put it in CVS at /storage_kit/source/lib. SKError.cpp and SKError.h 
>are the files. Test.SKError.cpp just shows an example of using it. 
>
>Since catching by value or by reference seemed to involve the copy 
>constructor being called a couple of times (which meant a lot of 
>unnecessary string allocation and copying), I decided to make the
>copy constructor private so you're required to throw dynamically 
>allocated exceptions. That means any time you catch an *SKError 
>pointer and don't raise it again, you have to delete it. Doing it that
>way means the constructor only gets called once for each exception.
>
>-Tyler
>
>
>
>
>
>







[ Home | Signup | Help | Login | Archives | Lists ]

All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
Everything else ©2007 Avenir Technologies, LLC.