turdus wrote:Owen wrote:Hang on, so this is CDI, but worse, with no intent at binary compatibility
No, implements only binary compatibility.
I reiterate: "There's no restriction on it's format (dll, so, kext etc. use whatever you like, see shared library). "
turdus wrote:Owen wrote:(Which can't even represent pointers on 64-bit architectures, mind you!), why?
Because they don't have to. They are offsets within the binary, and not memory addresses. They converted to memory addresses when your kernel loads the driver, and once the load address known.
While the binary is unlikely to occupy 4GB, I regularly run binaries where there is a greater than 4GB difference between the load address of the lowest segment and the end of the binary
turdus wrote:Owen wrote:If you want simple, use CDI. If you want highly performant and flexible, pick UDI.
CDI does not cover half of what UDRV was designed to do.
1. You can use a CDI driver only and only if your kernel can load it's binary format.
2. It categories drivers in a static way, while UDRV uses a well-known and open category for that. For example you cannot write a scanner driver for CDI as of now (take a look at include/cdi.h, no such category).
So add a category?
http://projectudi.org
You linked to the reference implementation (For Linux, FreeBSD, etc), not the project. You'll note that website was revised in 2010.
The spec doesn't really need active revision. There are some errata, but everything that needs doing (Metalanguage definition, for example) can be done without needing to wake up the slumbering giant.
turdus wrote:3. it's way too complex and overcomplicated for a hobby kernel
Matter of opinion. "UDRV" is far too simplistic for anything but the most basic of hobby kernels (It appears to use synchronous interfaces, ye gods!)
turdus wrote:4. if you want to utilize even the simpliest UDI driver with your kernel, well, that's hell a lot of work. No newcomers can benefit from it.
Supporting newcomers at the cost of being useless to everyone else was never the goal
turdus wrote:5. try to find drivers: google "open source udi driver" does not give you even a single downloadable driver on the first 3 page (not checked the 4th). Only papers, opinions and talks about it, most of which couple years old.
I don't see any UDRV drivers yet either.
The list of UDI drivers isn't great, though most of us who look to UDI consider any drivers that arise more of a bonus than the reason we go there (We go there because smart people already went there and did a lot of the hard thinking for us - no reason to reinvent the wheel badly)
That said, for members from our community, both thePowersGang and Combuster have some UDI drivers in various states embedded inside their repositories.
There are also a few UDI drivers lying around for use with UnixWare. I'm not certain of the licensing of them (Except that they're closed source and probably i386 binaries).
turdus wrote:6. was created by manufacturers, not hobby kernel developers
It was created by people who understood what they were doing. It was created with the intent of being the driver interface to end all driver interfaces.
It is one of the best authored technical specs I have ever read, if occasionally slightly hard to understand
turdus wrote:Neither CDI, nor UDI can:
1. detect if a driver applicable to your system without executing the driver
Lack of cursory research on UDI: Check
turdus wrote:
2. has standardized command line interface to configure the devices
The commonality between, say, the UNIX and VMS command line interfaces is very slim.
Unless your intention is to support POSIX and POSIX systems alone, not very useful.
Besides: Why am I configuring the driver? That tells me something has gone wrong somewhere.
(And why am I not using a GUI, anyway?)
turdus wrote:3. driver update distribution solution, because (let's face it) we are a developer community with very few "finished" code.
UDI has a standard package format.
For CDI... git pull
turdus wrote:Underspecified? No. Not put all in the wiki before asking your opinion? Yes...
The "specification" has lots of holes and lots of wavy language.
Its' incongruous to claim that it has features that CDI doesn't have when you haven't even written out your own specification of those features
turdus wrote:Nevertheless seeing the OS community resistance makes me to abandon it.
There are already two standards: CDI, if you want something easy to implement (All credit to CDI: As a technical exercise it may lack, but that's because it has different aims). If you want something which can scale (For example, you consider your project 'serious' for whatever reason: I for example consider my own a 'research project', which would be hampered by an insufficiently capable driver model) then the standard of choice is UDI.
The only concrete advantage you've offered is binary compatibility. Which is fine, but I don't see why you couldn't add that feature to CDI. After all, there has to be some "driver description" structure somewhere. I'm sure you can find it and figure out how to export it from an object file.