Linux Gains Native RTOS Emulation Layer 89
nerdyH writes to tell us that the Xenomai/SOLO project is attempting to deliver VxWorks and other RTOS emulation for any Linux kernel. "Some weeks ago, I started laying the groundwork for porting the Xenomai emulators natively over the PREEMPT_RT kernel. Unlike the co-kernel based Xenomai version, SOLO does not require any kernel support from additional modules or patches. It is fully based on the standard POSIX library, and runs as a regular process controlled by a single image Linux kernel. As a first step, a VxWorks emulator has just been rebuilt over this new framework."
A quick search reveals (Score:-1, Troll)
- Lord Haw Haw
Re:A quick search reveals (Score:2, Informative)
Re:A quick search reveals (Score:1, Offtopic)
nimp.org
A shock website, by entering any text in front of on.nimp.org, you create a link to the site. ww.texthere.on.nimp.org would be a link to the site.
The site itself is merely a way to make your web browser jump around on your screen, and open all programs attached to it. It can be annoying, but it is easy to stop on Mozilla Firefox. Microsoft Internet Explorer is very vulnerable to this "attack"
x: www.porn.on.nimp.org
y: *click*
x: dumbass...
Cmdr Taco - when will you permit removal of this type of crap?
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:2, Funny)
But there is some educational use for those links. Keep them coming, I say.
Re:A quick search reveals (Score:2)
Sorry, did I say 'typical'? I'd better be more careful....
Much like graffiti spray painted on the side of a building or vehicle, these things should be removed as quickly as possible. Deny the perp his/her "moment of glory". It serves no purpose and in other web forums, a trusting visitor just might damage their computer or have their personal identity stolen through the running of a nefarious script or download of malware. Not all users are as savvy as
Re:A quick search reveals (Score:1)
It's desensitizing, and I think that's a lot more dangerous than feeding a few absent-minded forum readers a malicious link, shaking them up a bit.
Re:A quick search reveals (Score:2)
Re:A quick search reveals (Score:5, Informative)
I had to power cycle my machine to shut it down as it managed to completely saturate the machine.
As far as I can tell it:
1. Tried to log me onto a gay porn site
2. Tried to open up IRC and do something (failed, luckily, since osx won't let such things happen automatically.. my screen just filled boxes asking if I wanted to start colloquy)
3. Tried to run a
I reckon if you clicked that button on a windows machine you'd be crying right now - and your passwords would be all over IRC too...
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:-1, Troll)
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:3, Informative)
But then, who in is right mind would admit on
Re:A quick search reveals (Score:2)
Just use the classic defence "I was reading
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:3, Insightful)
I don't like having to fend off thousands of malwares with an OS that implemented networking as an afterthought.
Re:A quick search reveals (Score:2, Informative)
Aside, I find it amazing that a 4 letter TLD is allowed to be used this way as long as it has. Nimp isn't just a shock site, it's got to break enough criminal laws to put it's owners and people that link to it in jail.
Re:A quick search reveals (Score:0)
Re:A quick search reveals (Score:2)
Re:A quick search reveals (Score:5, Insightful)
How 'bout you reformat and reinstall so the rest of us don't pay for your "everything appears fine." system?
Re:A quick search reveals (Score:3, Informative)
http://noscript.net/ [noscript.net]
Re:A quick search reveals (Score:0)
This should be sent to the Firefox dev team. Maybe there is nothing that can be done but I don't think a website should be able to move the main window around on your screen like that. If I remember correctly this web page has been around in some incarnation for years so maybe they already know about it.
Re:A quick search reveals (Score:2)
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:2)
Re:A quick search reveals (Score:0)
Re:A quick search reveals (Score:0, Informative)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>GNAA Last Measure Live!</title>
<meta name="keywords" content="bsd digg gay gnaa internet last measure linux nigger slashdot freebsd niger internet providers internet service providers nigga gays niggers openbsd internet access cable internet xandros netbsd gai gay sex gay personals bds gaysex enternet dial up internet cable internet service lunix internets gay black men internet services cheap internet service gay chat rooms internet fax service insmod gey internet radio dial up internet access international internet gay massage inux gay movies gay com gayboy internet business internet businesses homosex internet college internet banking schwul internet gambling neger homosexuales internet poker internet filtering satellite internet connection internet roaming gay cock broadband internet access gay adoption asian gay gay bears gay guys linux on windows internet connection schwule gej maryland internet linux recovery gay sites michigan internet remote internet access making money on the internet gay pornography gay hardcore internet speed up atlanta gay internet game older gay men gay nudist gay shopping gay san francisco houston internet california internet nigga stole my bike gay houston gay marriage gay bear internet auctions internet worldwide linux laptops redhat9 internet billing broadband internet linux drivers linux pc gay amsterdam gay seattle gay bdsm selling on the internet mature gay men internet call gay sex chat internet marketing gay toys internet printing linux help freebsd ports mobile internet linux for windows linux clustering gay chat teen gay porn ny gay alabama gay freebsd 6.0 linux os spain internet clips gay hairy gay men gay leather make money on the internet gay boy gay philadelphia gay community internet via satellite freebsd 6 gay cartoons gay love nigga lyrics niger uranium internet search gay news hate niggers gay georgia oral gay sex linux downloads communication internet niger africa bds suspension gay nude boys linux applications gay pics enternet 300 internet censorship internet information server gay australia redhat linux gay niggers niger forgeries gay phoenix gay orgies internet sites aspergillus niger internet traffic oracle linux gays fucking linux support test internet internet messaging gay vivo horny gay the internets niger forgery bds marketing freebsd org sex gay movies internet canada niger yellowcake gay women linux apache the niger river freebsd wireless internet development bodybuilder gay freebsd java can a nigga get a table dance gay latinos deng gai linux penguin realest nigga real nigga roll call linux tutorial japanese gay gays in military freebsd screenshots linux systems linux software freebsd apache joseph wilson niger installing freebsd gay store freebsd update freebsd port freebsd upgrade teen gays install freebsd freebsd cvsup dead niggers cumshot gay ten little niggers gays com freebsd laptop fuck your couch nigga broke nigga internet stock trading niger document jews spics wtc jew jewish holidays jewish calendar jewish community center anti semitism single jews jewish names jewish history jewish museum jewish hospital jewish wedding bernanke jewish us jews jewish music jewish federation barnes jewish russian jews jewish jokes libby jewish jewish singles jewish religion barnes jewish hospital long island jewish jewish people jewish news jewis
Re:A quick search reveals (Score:2)
Firefox + Adblock + Noscript + Privoxy
Re:A quick search reveals (Score:1)
Oh, BTW, It does try to post the site the content of your clipboard and load a "LastCoffee" Java applet, which I'm sure is not good. Doesn't work on up to date Java.
I am not going to try this in IE, because I don't feel like dealing with the slight chance of rebuilding my VM. I doubt it could do much worse than hang IE7 (on Vista anyway.)
Re:A quick search reveals (Score:1)
Re:A quick search reveals (Score:0)
Re:A quick search reveals (Score:2)
Re:A quick search reveals (Score:2)
I'm basing this on the guy who pasted the web page code, after a reset.
it would be far more scientific to take a known clean, preferably sp3ed machine make a backup of all files in linux (dual boot with 2 hds or whatever) then diff the results after letting that site run for 1 minute. any exploits would then show up among the files that normally change, the list should be fairly short, and programs and prefetched files etc will be easy to spot.
This was a succesful mission. (Score:-1, Troll)
Awesome.
- Lord Haw Haw
pr0n frist? (Score:0)
Realtime, VxWorks, Dolla Dolla Bill Yall (Score:5, Interesting)
VxWorks is the only OS I've played with so far that allows this, but I'm VERY curious to see what people can inject into the Linux kernel. VxWorks is.. shall we say... NOT CHEAP. And inter-version migration is a pain... and god help you if you aren't using off the shelf hardware...
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:5, Informative)
Any normal distro Linux kernel can do this particular part. Just set the scheduler to round robin. (You can do this in KDE4 btw. Press ctrl-esc to bring up the task manager, right click a process, change priority, and chose round robin.)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:0, Offtopic)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:5, Interesting)
Have you ever actually had to code for Vx?
You couldn't pay me enough (literally - I've turned down jobs that wanted me to work with it... I should probably take it off my resume) to deal with that POS (by which I don't mean "Point Of Sale") on a regular basis.
Actually, in fairness, as an OS, it doesn't suck too much. But the build tools... Let's just say WindRiver clearly subscribes to the "firmware should hurt" coding paradigm. The IDE made OutLook look stable and friendly, the command line build tools simply didn't work (literally - WR couldn't even have tested them, because they failed phenomenally even on a clean install and a "hello world" module), the revision control had no objection to overwriting parent revisions without forcing a new fork... Ugh. I'll probably have nightmares tonight just from thinking about it.
Oddly enough, it surprises me to see it still talked about. When I suffered with it nearly a decade ago, it looked like a near-certainty that Linux would tap that last nail in its coffin. How ironic, that Linux should now give it new life via emulation.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:4, Informative)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:3, Informative)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
Really? I guess vxWorks is an acquired taste then, because I'd be extremely happy to be given the opportunity to use vxWorks again.
I would have liked to have my own copy, but since a single licence for vxWorks costs more then I can reasonably afford (well, it used to, I can't find the price now), its out of the question.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
The last time I had to use it --- which, admittedly, was a while ago --- we had a requirement to do asynchronous I/O. VxWorks didn't support that, so we had to emulate it by using a pool of helper tasks each of which ran a blocking I/O operation. Unfortunately we had a further requirement that asynchronous I/O operations had to be cancellable, and the only way we could find of doing that was by nuking the helper task that was blocked on the I/O operation. Unpleasant, to say the least, especially as we then discovered that on the BSP we were using, half the device drivers had bugs which meant they leaked resources / crashed / made the system hideously unstable if you destroyed the task while they were in the middle of an operation...
Hopefully this has all been sorted out by now, but it still left a nasty scar. I've had much better experience with Nucleus (although it mysteriously does not have mutexes, only semaphores), and while I haven't worked with it, I really like the look of QNX.
POS needs realtime? hahahahhaha (Score:-1, Troll)
Theres few things that need ultra accuracy, unless they are dependent on law of physics like water pumps or flight guidance systems. But through enough cpu power in and
it can be closer to RTOS than an expensive RTOS system I personally think.
Any NON RTOS system can be made to be close to RTOS if you code your stuff smartly to be aware of time and make sure it doesnt use too much. I mean any one can benchmark
array copies/sorts/inserts and then determine ahead of time if X operation will take more than 100ms. Oh yeah a little more work, but its just one cost.
Btw, if their IDE's are that bad, then it doesnt say much about their OS really... because if they had a clue, they would leverage Eclipse or even plugin to VS.
TEchnically even Amigas were RTOS, since you could hardware wise gurantee interrupts to be triggered.
Re:POS needs realtime? hahahahhaha (Score:5, Insightful)
Re:POS needs realtime? hahahahhaha (Score:5, Informative)
These things typically run on embedded devices, not a friggin' Dell midtower. They do one job and they do it with exacting accuracy, on minified motherboards and fanless CPUs, hooked up to custom-built controllers and monitoring equipment.
RTOS tasks are typically things we used to do in solid state with simple feedback logic, but the RTOS allows it to be done in software at a lower cost, plus allowing easy updates or adjustments without a complete redesign.
Re:POS needs realtime? hahahahhaha (Score:1)
Re:POS needs realtime? hahahahhaha (Score:2, Interesting)
A RTOS isn't about speed, it is about predictability. It is about guaranteed response.
There are some things that a 200MHz machine with the right software can do quicker and more accurately than a 4GHz machine with a standard OS.
What it comes down to is they built an expensive mansion, but built it on sand. Doesn't matter how expensive or big the house is, if it is built on a poor foundation, the house will be unstable.
I have seen process control applications where an 8MHz 8086 was fine. No OS, just application coded in ROM. Fast enough, stable. When newer, faster processors came available, the bosses decided, "We have power to burn, let give the application a GUI." So now they run with dual processor motherboards. But... motherboards today are not as fully debugged as the old days. Some companies never kills the bugs, they just release a new Motherboard with a new (buggy) chipset. Same for the OS. A well written application becomes unstable.
If you drop a scratched DVD in you DVD drive, does your windows machine kind of hang while windows tried to decide what is there? I've experienced that quite a few times.
BTW, this is similar to Linus' exchange with Tannenbaum on monolithic v.s. microkernel.
Re:POS needs realtime? hahahahhaha (Score:2)
And there are defnitely more things that really need accuracy. Basically every kind of system that interfaces with hardware on a raw I/O level, with control implemented in software. Hell, a dumb high-speed rotary-to-linear transducer with a motor needs extremely precise software control.
Looks like you need to get a broader view of things before stating completely unfounded statements in the public.
Re:POS needs realtime? hahahahhaha (Score:2)
Re:POS needs realtime? hahahahhaha (Score:1)
Depends on the application, the system functions needed, the volume it will be produced in, the time to market required, etc. FPGAs and CPLDS are certainly used a lot. It's definitely a multi-billion dollar business. But these days mostly where performance is critical, and is worth the extra cost. FPGAs are not that cheap. The main ones we use cost us $100-200 each in small volumes. For one project, we're using a high end version that costs $2500.
Think of coding for CPLDs or FPGAs as a level _below_ assembly. Why isn't more software written in assembly code these days? It takes too much time. Even more so for good FPGA code. It is only worthwhile for certain applications which really need the performance per watt. And for high volume applications, the FPGA design is just a prototype stage, and then the design is moved into an ASIC.
Also, when you do build a system with an FPGA and either an embedded CPU or your own board design, you are no longer leveraging off of the work of many others. You are starting over from the bare metal, defining your own hardware interface, timing, APIs, drivers, and everything above that. Being able to leverage off of the hundreds of man-years of programmer time in Linux is a huge benefit, if you can do it.
Also, setting up a build environment, debugging interface, and other necessary tools eats up time. Some things you can find, but it's a lot harder than buying something like a Gumstix board with Linux loaded, and a set of cross-compiling tools on a CD. But you can't always use Linux for hard real-time hardware control.
In some cases, a FPGA or CPLD is the right answer, though as I said, now you have to develop everything yourself from scratch. It can be interesting and fun, if you don't have your company's ability to pay your salary (and everyone else's) dependent on you getting it done in 2 weeks....
The system I'm working on now uses a 400 MHz XScale based board we buy off the shelf, running Linux. Then we have a couple of simple drivers to interface to an FPGA which does the low-level hardware interface. But that FPGA code took many many months, and new features take many weeks to add and get right. (if you want it to run fast that is)
For a lot of low-level hardware control, the easiest thing is to just grab an off the shelf 8-bit or 16-bit processor and write mostly C code. Add a tiny bit of assembler, if you need it, and you can get the job done much easier and faster. Often you don't really need an RTOS, or can use a very very simple one. Since you can get 8-bit processors that run at 50MHz or more, and C code is so much faster to write than FPGA code. I've done many of those designs with serial port control in the past, and these days even the small processors can handle a simple TCP/IP stack.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
Uh, no. Linux is going to give it a new lease on death this way. How many Windows users have been able to jump ship since Wine has actually become useful? If this delivers it will provide an upgrade path away from vxworks that allows a company to spend their time working on a port while using Linux as an interim band-aid.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
They certainly much better than LynxOS (who also uses Eclipse as their IDE - but their plugin as not as well integrated by far)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:1)
I can't wait to replace it with Linux, at least when that fails to compile code, it will probably do so every time and in the same place. Having the build system just run make a few times in a row so it might finish does not make me glow with joy.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:5, Informative)
Have you tried QNX or RTEMS? I don't have any data on their scheduling accuracy, but they claim to support the same real-time features. I've also found the QNX documentation much easier to follow, and I managed to turn out a BSP and a custom device driver within a week of first receiving the software.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:3, Insightful)
I don't understand why WindRiver hates documentation to much. They actually have a policy of not sending hard copies of their manuals anymore. Their man pages are kind of half-assed. I usually have to go straight to the kernel source tree to figure out what a function really does. I really must still state, it's a real pain to use, but their stuff DOES work. Once you get it set up right, I've found 99.99% of what goes wrong is application code's fault.
I've learned that if it takes more than a day to figure out how a specific something works, I pass it along as a service request to them. It's not my fault if the didn't document well enough!
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:0)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:3, Insightful)
May be you need to play more
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:5, Informative)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:1)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:0)
That brings up memories.
I was there when WindRiver bought it. I made a fork that changed it to not use recursive make (see http://www.xs4all.nl/~evbergen/nonrecursive-make.html [xs4all.nl]) however because no-one there was considered head honcho of that source tree it didn't get incorporated. I talked to another engineer and the same thing had happened to him. After that I realized that no matter what platitudes the PR folks were saying, they really had just bought it to kill it off. That, combined with the "Linux is the devil" attitude from management caused some serious disillusionment about the company. After I left I heard that management did an about face on the Linux front.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
http://en.wikipedia.org/wiki/TRON_Project [wikipedia.org]
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:3, Interesting)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:4, Interesting)
Off-the-shelf is where BSP's and drivers come in. The BSP (board support package) needs to be configured for the specific board. WindRiver provides a kajillion default packages, and if you use a off-the-shelf-board, the BSP and driver set should require little or no modification at all so you can just go straight to customizing your OS. The more customized your board is, the more you might have to do, such as writing VME, clock, PCI, or Ethernet drivers, do custom memory management, etc. I guess it's not fair to peg this complication on WindRiver. I haven't tried a Linux kernel on a custom board, but just as much configuring must go on at some point.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:0)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:1)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2, Informative)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:1)
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:3, Informative)
Another problem I have seen in VxWorks is the priority inheritance: It doesn't work correctly for nested locks: A low priority task takes a lock A, runs it's own code for and then it calls into say a driver and takes lock B. Now some high-priority task wants to access the same driver and tries to lock B. The first tasks is then boosted in priority and soon finishes the driver call and unlocks B. But it is not unboosted before it release A. That is a huge problem in a RTOS: Suddenly the timing of the high priority task depends on how long a low priority tasks keeps the completely irrelevant lock A. You don't get the decoupling, that the timing of a high priority tasks only depends on the tasks of equal or higher priority, which is so important in a RTOS.
Basicly, I think core of Linux with PREEMPT_RT is a better (more deterministic) RTOS than VxWorks, but slower (longer maximum latencies for especially interrupts); but all subsystems around the scheduler etc. aren't coded for RT use - i.e. it has non-deterministic code-paths and might even make blocking calls. So an RT application on Linux/PREEMPT_RT can basicly only use basic highres timers, simple serial ports and memory mapped devices. Use of the netstack, disk IO is a no-go. But then again, the same applies to VxWorks...
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
I recently worked on a mobile phone platform (not based on VxWorks) which had a mechanism for sending messages to specific threads. There was a system wide 150-slot message queue. There was a background thread that ran at low priority that was supposed to do non-real-time things like UI work. This thread was a message receiver. The system did not support timeslicing.
Can you see the problem yet?
If the background thread didn't get enough CPU time, it wasn't able to keep up with the incoming messages that would get posted by high-priority threads. This meant the queue would fill up, and once the queue filled all the way up, the system would reboot. The end result was that since the system didn't support timeslicing, if any thread running at the 'background' priority spent too long running without yielding, the message receiver thread would get starved of CPU, and splat. They were using a low-priority background task to handle high-priority system critical operations. When we queried them on this, they said, "Well, we don't really plan task priorities; we just adjust everything on an ad-hoc basis until it works."
Gah.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
Good points. If you're doing an embedded hard real time system, you might need the small size and timing repeatability of VXworks. If not, you don't need VXworks at all. It's much easier to write to a POSIX interface. There's not much software for VXworks you'd want to port to Linux. So a VXworks wrapper for Linux doesn't meet any widespread need. Maybe someone needed it for a specific porting job, so it was worth doing once.
I'd still like to see a real message passing system, like the one from QNX, in Linux. Even just writing web apps, Linux interprocess communication is still too lame. We have people using SOAP and JSON over sockets to do an interprocess subroutine call. I recently had to use Python pickling over pipes to a subprocess, and it's so primitive coming from QNX, where you have MsgSend/MsgRecv and a real client/server interprocess communication model.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:2)
QNX message-passing is nothing that can't be easily rewritten.
Re:Realtime, VxWorks, Dolla Dolla Bill Yall (Score:1)
What is the relationship with Xenomai? (Score:1, Interesting)
Anyway, so far the reason for having the co-kernel approach was that Linux was not able to provide low latency, so I guess it's good news: some knowledgeable people consider that the latest Linux version (with PREEMPT_RT) is up to the task
crystal gamma (Score:-1, Offtopic)
who exactly needs this ? (Score:1)
Re:who exactly needs this ? (Score:1)
Given enough time, I would love to chuck v2lin out altogether and access pthreads directly.
Does anybody have any tips for surgically removing v2lin from legacy code?
Oh dear god no! (Score:2, Interesting)
I could see people wanting to hypervise linux in a secure RTOS but emulate an RTOS in linux? Please tell me this is for development purposes... further still- are they completely insane?
Re:Oh dear god no! (Score:2)
RTFA.
Imagine you've already got the 8 megs, and you still want things to happen in realtime. Oh, and you want to actually have drivers.
Suddenly, things like VxWorks are going to cost you in licensing fees and development time, in return for... what, exactly?
Re:Oh dear god no! (Score:2, Insightful)
Do you have any idea why people use realtime systems?
With VxWorks you pay license fees... FOR A REALTIME SYSTEM. You're also able to do a lot more with a lot less resources. In the embedded world, less is more! You save millions cutting kb's (or mb's) of ram out of hardware. And this emulation layer saves what, some programmer a week or two tops porting one POSIX-compliant VxWorks application to a semi-POSIX compliant linux device. The licensing fees don't seem so bad when you think about the extra hardware necessary to use a make-believe-realtime OS like "realtime" linux.
I've got a better idea- use a real, tried, trusted RTOS and simply use an emulated UNIX layer if you need that sort of support (most decent RTOS support this). This pairing of linux and Xenomai's RTOS just sounds awkward. Software costs are just miniscule compared with the cost of making a bulky device with hardware that outclasses its functionality.
Re:Oh dear god no! (Score:2)
Yeah, pretty much.
...aaaand it looks like you didn't read my post. Try again.
Re:Oh dear god no! (Score:1)
The moment anything passes through a linux kernel, it's no longer realtime. At best, it's "soft realtime" aka "realtime except for when it is not". For a realtime linux system to work, you'd have to run two kernels (linux and an RTOS) with two different processors, usually on an asynchronous multi-processor device, where linux runs on a dedicated non-realtime processor and an RTOS runs on a CPU designated for realtime.
SO either Xenomai is actually emulating linux as well as VxWorks in parallel, or VxWorks is running emulated as a soft realtime layer- because the moment anything TOUCHES that linux kernel, it's no longer realtime. It must pass directly through to Xenomai's RTOS or it's not realtime. If you wanted a realtime system PLUS all the perks of linux, you just got neither. Either this is useless or it is NOT LINUX.
At best, you now have some crappy open source RTOS that communicates with linux through a socket. How convenient! There's almost no benefit to this over simply having a unix compatibility layer or a real RTOS, and hypervised linux running in parallel with a vxworks compatibility layer. VxWorks can't touch linux without defeating the purpose of having used VxWorks at all.
Re:Oh dear god no! (Score:2)
Take a task which needs to be hard realtime, but for which you'd like to see reports. The task continues to operate at hard realtime, on whatever hard realtime layer is needed, throwing log messages into a ring buffer in a realtime-compliant, deterministic way.
Another task, which doesn't need to be realtime at all, attempts to pull stuff out of the ring buffer and send it over the network to a logging machine, or to local storage, or whatever. Maybe it even generates fancy reports, flips blinkenlights, etc.
Worst case, the reporting/logging task falls behind, and generates an error -- but the hard-realtime task just keeps chugging along, and doesn't even notice.
That's probably a bit contrived, and certainly naive, but I do imagine there are other, similar cases where you need some tasks to be realtime, and some tasks can lag. And if it can be done without a hypervisor, that's probably a performance gain.
Re:Oh dear god no! (Score:2)
That was true in the past, but it is no longer true. The algorithms of the latest approaches to real-time Linux, when working together, actually do provide deterministic, hard real-time responses if the real-time parts of your application are coded appropriately. (By this, I mean that you don't expect a deterministic response when trying to use a service which isn't, such as a filesystem.) And they do this at the same time as supporting the vast set of devices and features of a general purpose OS.
Older approaches to "real-time" on Linux either had a separate real-time layer, with Linux itself as a sort of task running on top of that and extra drivers required, or they used a best-effort approach, where drivers and other code could potentially hold a lock for a long time, blocking real-time scheduling, but you hoped to minimise those through testing and tweaking drivers all over the place.
The current approaches work differently. All drivers can take locks, but tasks which require higher priority or even deterministic scheduling aren't blocked by locks, nor by other interrupts (unless those have conflicting real-time requirements too, of course), except when there is genuine contention over a common resource, such as accessing the same chip.
This is just like the Linux-over-real-RT done before, but without having to have separate interrupt infrastructure and so on.
Additionally, the current approach allows RT tasks to use system services like filesystems and networking and so on, when that's convenient. When this is used, using a non-RT service means the RT tasks take on potentially non-RT properties but only for the duration of that call, which is expected by the RT caller anyway at that point. Furthermore, Linux applies a priority inheritance technique even in that case.
The ability to intermix RT code and non-RT services well is very convenient for some applications. E.g. mobile phones have strict RT requirements for the radio, but not for the GUI. It is convenient for hardware cost and versatility if both can run on the same multi-core CPU, scheduled by a common OS.
Why would you emulate a realtime system in a non-realtime system? Doesn't that defeat the purpose of a realtime OS?
Because the underlying Linux got better real-time properties since you last looked; the "non-realtime system" is now a mixed system with some real-time capabilities when requested.
That's not at all obvious, because it's not done in a simple way.
A remarkably large number of different things need to be implemented together to get those properties while keeping close access to the general purpose OS services, and using common drivers. Things like high-res timer queues, spinlock preemption, prioritised lock acquisition including userspace locks (RT-futexes), priority inheritance, O(1) scheduling decisions, preemptible interrupts (i.e. interrupts become RT tasks themselves), and countless details.
But if you bring the right ingredients together, you can see that the code paths, although non-obvious, are able to provide deterministic real-time response to particular applications on appropriately chosen hardware, while still able to run general purpose OS services at the same time on the same hardware, and without having a lot of special drivers and code dedicated to the real-time part. And there are quite some benefits to this mixing, for more complex applications.
This stuff still isn't suitable for nukes and car engines. But it's not suitable because it's too large and complicated to prove everything is right and nothing critical breaks the rules, not because it doesn't provide RT guarantees in principle.
It is well suited to things like mobile phones, even the radio DSP part which has strict timing requirements, since it does provide suitable mechanisms in principle, and any failures in an application like that are not catastrophic but simply bugs to be fixed in the usual way.
Re:Oh dear god no! (Score:1)
In this case, the project must be very delicate in providing vxworks support while not stepping into any of these non-RT boundaries.
Of course, I still come from the school of thought that recommends a re-write when switching from a true RTOS to a hybrid-RTOS. The emulation approach seems a little too "soft" for most of the embedded applications I am used to.
I rescind my statement about linux requiring to work in tandem with an RTOS in order to perform realtime tasks.
Re:Oh dear god no! (Score:2)
So in practice, I think it will be something which provides RT properties when running smoothly (e.g. (this is a guess) not doing things like initialising new RT processes or adding new devices), but you still have to test your application to get to the level of confidence that it's good enough for practical scenarios. As a tool, that puts it somewhere more reliable for RT than older soft-RT systems, but not quite to the level of guarantees from a much simpler, hand audited (we hope) system.
Mind you, I'm not sure where VxWorks fits on that spectrum either. If you really, really need hard RT assurances, wouldn't you write your own (very) tiny kernel and consider every critical code path? I have done this on a couple of occasions, for relatively simple devices.
bawww (Score:-1, Offtopic)
can someone repost link?