[openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
- To: openbeosstorage@xxxxxxxxxxxxx
- Date: Tue, 29 Jun 2004 22:30:19 +0200 CEST
Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx> wrote:
> On 2004-06-28 at 23:53:05 [+0200], Axel Dörfler wrote:
> > Yes, I am all for removing the separated kernel_interface, too.
> > However, how should the transition be done?
> > Right now, there are already some places where the Storage Kit
> > directly
> > calls R5's syscalls - of course, those would have to be changed
> > first,
> > as they don't build under Haiku, and I don't intend to add these
> > syscalls :)
> > My suggestions are these, either:
> > a) ditch R5 compatibility; we have our tests written, there is no
> > need
> > to perform the tests for our kit under R5 when we can do the same
> > under
> > Haiku.
> > b) conditionally compilable for R5; i.e. if some macro like
> > COMPILE_FOR_R5 is defined, _kstart_watching_ is used instead of
> > _kern_start_watching.
> I would in principle vote for a), but things are unfortunately a bit
> more
> complicated. The unit test framework uses quite a bit of BeOS API
> itself
> (and the STL!), so it might be not so easy to get the tests run under
> Haiku
> in the first place.
I don't completely understand; for a start, we can simply copying over
libstdc++.r4.so.
Also, we do have all the Be API in place, don't we?
Only functions that require an app_server connection won't work. Which
is perfectly okay for now, I'd think, as we know which APIs are
affected and why.
> > In any case, I am willing to help with the transition on both sides
> > - I
> > probably have to do provide the kernel API for you anyway, and I
> > know
> > Ingo doesn't have that much time before his Bruce-in-China trip :)
> I'd actually love, if you could wait a month, so that I could help
> with the
> transition. By then my job should go considerably easier, leaving me
> a
> reasonable amount of spare time again.
Sure, I can do that. I will just replace the BeOS syscalls with Haiku
syscalls to make it link (and work) on our system (node watching).
I wish you a great experience! :)
> > But since you know a lot more about the Storage Kit's needs, it
> > would
> > be nice to share some insight, i.e. what type of calls you would
> > like
> > to have, and why.
> I can't list them off the top of my head. Most can already be done by
> means
> of the public C API. There should only be a handful of additional
> syscalls
> be needed. Like a _kern_open(), _kern_read_stat(), _kern_write_stat()
> with
> FD + relative path parameters, syscalls to read and write symlinks
> per FD,
> as well as syscalls for node locking and node monitoring.
What about special entry_ref support? Should there be functions that
directly take an entry_ref, too?
I.e. something like:
_kern_open(int fd, entry_ref *ref, const char *path, ...)?
or
_kern_open(int fd, dev_t device, ino_t parent, const char *path, ...)?
But anyway, we can think about that later.
> > [...]
> > > To sum it up, I would vote for completely getting rid of the
> > > interface at
> > > some point in the future, thoroughly revising the API classes
> > > implementations. Maybe not right now, because it may help to port
> > > the
> > > Storage Kit faster to our kernel, but definitely before R1 is
> > > shipped.
> > I think so, too. I would start with the non-POSIX calls like the
> > syscalls and the stuff in LibBeAdapter, and then one after another,
> > remove all other parts of the private API.
> I'd probably go the do-it-all-in-one-big-sweep way, but whatever
> works is
> fine. BTW, I would actually not have started with porting our libbe
> until
I'd be glad if we could do it in one sweep - I just wouldn't do it
myself (alone) this way, as it has a lower priority for me :-)
> the app server was in state that would allow large parts of libbe to
> work.
> Not necessarily the Interface Kit as a whole but at least BBitmap,
> which is
> required by the Storage Kit. We once had a quite usable state, when
> the
> registrar work was basically done. At that time I had provided a
> quick and
> dirty BBitmap implementation that didn't require an app server
> connection.
> Maybe it would be a good idea to isolate the app server depending
> code via
> #ifdefs to try and get a reasonable large coherently and
> independently
> working portion of libbe (the Support, Storage and main parts of the
> App
> Kit, together with the registrar of course) and port that as a
> beginning.
Dunno; I think we can live without app_server for now. When the issue
becomes more pressing, and the app_server team doesn't deliver, we
could ask them to make us a version that doesn't do graphics - I would
think that this can't be that hard.
We may also be able to run parts of the Media Kit then :-)
I just have to squash out some serios bugs before...
> > [libstdc++]
> > It's a problem for exactly one reason: we don't have a libstdc++ at
> > this point. There is no team that works on this or anyone doing any
> > work, there is no source of the version Be used.
> > If we don't achieve binary compatibility with it (that's why we
> > can't
> > use STLport for example - which was already ported over by Marin
> > alias
> > Ahwayakchih alias Shard), we would have to provide two different C+
> > +
> > libraries, which I really wouldn't like.
> > We would need to get a current C++ library and try to make it
> > binary
> > compatible - that sounds like a lot of fun...
> >
> > But since that all is still unresolved, I think it's the wrong
> > signal
> > to use it everywhere :)
> Risking to sound like a know-it-all, I already tried to bring up the
> questions of STL binary compatibility almost two years ago, and for
> some
> reasons it didn't led to a serious discussion. The best solution, I
> have
> heard since that time though, is to work around the matter of STL
> binary
> compatibility by simply including R5's libstdc++.r4.so and use a
> current
> STLport, probably dropping source compatibility -- but who cares.
Well, in that case, I would try to remove the dependency for libbe.so
on libstdc++ - because I wouldn't like if we need to have two of those
libraries around by design always.
But as you do, I am not worried about source compatibility - a header
change here and there is fine, especially when it improves things :-)
> > Since when it's loaded anyway all the time for all applications, we
> > could integrate it into libroot as well.
> If at all then into libbe. But I don't see reasons for that either.
Why libbe.so? Then all apps that need C++ functionality would need to
link against libbe.so. Okay, that should be harmless, but it would be
kinda strange if a C++ app would need to link against libbe.so just for
some C++ features.
Anyway, adding it to libroot.so would probably make loading a bit
faster - but there are a lot of other methods to work on that, too. And
right now, we don't even know how much of a problem it will get.
BTW libgcc.a is linked into libroot.so; and I need it to export all
functions that others could need. Marcus had the great idea to
dearchive libgcc.a and link the object files together into libroot.so.
Do you have a quick idea on how a Jamrule achieving this could look
alike?
Bye,
Axel.
- Follow-Ups:
- [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- From: Ingo Weinhold
- References:
- [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- From: Ingo Weinhold
Other related posts:
- » [openbeosstorage] Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- » [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- From: Ingo Weinhold
- [openbeosstorage] Re: Getting rid of kernel_interface.POSIX.cpp
- From: Ingo Weinhold