ada & embedded/real time linux€¦ · • ada real-time kernel beneath dos ... linux handlers...
TRANSCRIPT
![Page 1: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/1.jpg)
1
Ada & Embedded/Real Time Linux
Ted BakerDept of Computer ScienceFlorida State University
Tallahassee, FL 32306-4530USA
[email protected]://www.cs.fsu.edu/~baker
SIGAda14 November 2000
![Page 2: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/2.jpg)
2
Acknowledgements
• Hongfeng Shen – RT Linux V1 GNULLI
• Arnaud Charlet – GNAT & GNARL integration, testing, optimizations
• Mike Kamrad & Top Layer Networks –GNARL pruning
![Page 3: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/3.jpg)
3
Outline
• Motivation: embedded Ada and OS needs
• RT Linux
• A GNAT runtime system for RT Linux
• More Recent Developments
• Future Prospects
• Maybe some comments on patents*
![Page 4: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/4.jpg)
4
Motivation
• Ada tasking was intended to be implementable on a bare machine
• Ada 95 improved the fit
• Ravenscar profile went further
• Operating systems still limit performance
• Need “free” real-time Ada platform
• Research and instructional tool
![Page 5: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/5.jpg)
5
Ada 95 Rationale Tasking Model
• Strictly preemptive scheduling
• Queuelesslocks
• Only ready tasks can hold locks
• Require locker active priority > lock ceiling
• Lock holder inherits ceiling of lock
• Lock operation raises active prio. to ceiling
• Unlock restores previous prio. & schedules
![Page 6: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/6.jpg)
6
GNARL Architecture
Ada application program
GNARL
Threads Layer
GNULLI GNULLI
GNARL
Ada application program
Operating System
Machine
Machine
Middle layers can be removed.
![Page 7: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/7.jpg)
7
The Real-Time OS Problem
• MS Windows & full Unix systems not suitable for hard real time applications
• Cannot be retro-fitted– Too large
– Too complex
– Too unreliable
• Specialized RT OS’s exist…but which one?
![Page 8: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/8.jpg)
8
Real-Time OS Woes
• Not standardized, despite POSIX efforts• Proliferation of products, versions, features:
Which one(s) should Ada runtime support?• Conflict of demand for large-OS features vs.
predictability, reliability, small footprint • Advanced real-time ideas not being
supported quickly enough• Closed source code
![Page 9: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/9.jpg)
9
Build a New RT OS?
• OS very costly to develop, maintain• Device drivers are especially costly
– Poor documentation of device interfaces– Debugging difficulty– Plethora of devices need to be covered
• Multiple hardware platforms• Patents* may restrict new entries• Who can catch up with big vendors?
![Page 10: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/10.jpg)
10
A Solution
• Layer real-time OS beneathexisting OS
• Provide virtual machine for background OS
• Run real-time tasks in foreground
• Provide data and control connections between foreground and background
![Page 11: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/11.jpg)
11
Benefits
• Predictable hard-real-time performance
• Complex non-real-time functions can be performed in the background OS
• Background OS is intact
• Background OS device drivers inherited for uses without hard real-time constraints
![Page 12: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/12.jpg)
12
An early layered kernel: TARTE
• Ada real-time kernel beneath DOS
• DOS runs as background task
• Supports Ada 98 “featherweight tasks”
• Predictable timing, low overhead
• FSU developed for STARS Foundations, delivered in 1988
![Page 13: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/13.jpg)
13
1996 Plan at FSU
• Apply TARTE idea to Ada 95
• Build tasking kernel to run directly on hardware
• Run DOS or Windows 95 in background
![Page 14: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/14.jpg)
14
Then came RT Linux …
![Page 15: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/15.jpg)
15
What is RT Linux?
• Small real-time OS that lies under Linux, the popular “free” Unix operating system
• Supports threads inside the Linux kernel
![Page 16: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/16.jpg)
16
RT Linux™
• Victor Yodaiken, et al.
• New Mexico Institute of Technology
• Trademark of FSMLabs– www.rtlinux.com
• Open-source software, under GPL– www.rtlinux.org
• For Linux kernels 1.0 – 2.4
• For x86, PowerPC, Alpha
![Page 17: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/17.jpg)
17
RT Linux Features
• Foreground real-time threads
• Shared virtual address space with Linux
• Postponed delivery of hardware interrupts
• FIFO buffers between fore and background
• Easily replaceable scheduler
• Fine-grained clock and interval-timer
• Implemented via Linux kernel modules
![Page 18: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/18.jpg)
18
RT Linux ModelLinux Process Linux Process Linux Process
Linux Kernel
RT Thread
RT Thread
RT Thread
RT Scheduler
Linux Scheduler
RT Timers
FIFO
scheduling read/write
scheduling
other interrupts
Linux Handlers
timer interrupt
![Page 19: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/19.jpg)
19
Linux Kernel Modules
• OS extensibility mechanism
• Dynamically loadable and unloadable
• Run in kernel address space
• init_module runs when module inserted
• cleanup_module when module removed
![Page 20: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/20.jpg)
20
1997 Plan
• Ada application : Linux kernel module
• Port GNULLI to RT Linux
• Test GNULLI directly, then integrate
• Restrict GNARL as necessary
• Modify GNAT to support kernel environ. and optimize for restricted cases
![Page 21: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/21.jpg)
21
GNARL RT Linux Architecture
Ada application program
GNARL
Threads Layer
GNULLI RT-Linux + GNULLI
GNARL
Ada application program
Operating System
Machine
Machine
![Page 22: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/22.jpg)
22
Foreground & Background
Ada Runtime
Ada Application Module
Other Kernel Modules
Linux OS Kernel
Other Kernel ModulesOther Kernel Modules
FIFO
DevicesDevices
DevicesAda Runtime
Ada Application Program
FIFOFIFO
![Page 23: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/23.jpg)
23
RT Linux GNULLI
• Implemented in 1997-98
• Based on RTLinux Version 1.0-1.2(which supported only single CPU)
• Discarded RTLinux scheduler
• Kept interrupt hijacking, timer, FIFOs
![Page 24: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/24.jpg)
24
Simplifications
• Single control block per task/thread
• Pre-allocated control blocks
• Pure ceiling locking, no lock queues
![Page 25: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/25.jpg)
25
Initial Challenges
• No experience with kernel modules in Ada
• Cannot use C header files directly
• GNARL was more than wanted, intertwined
• Need to execute before elaboration
• Running in kernel imposed restrictions
![Page 26: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/26.jpg)
26
Kernel Restrictions
• Memory is limited
• Modules must be complete– May only refer to symbols in kernel &
previously loaded modules
• Cannot make OS calls from inside kernel– e.g., no malloc() or I/O
– GNAT uses dynamic storage allocation
![Page 27: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/27.jpg)
27
GNULLI Performance (1999)
• Harmonic task set: 320, 160, 80, 40, 20, 10 Hz
• Pattern:– lock; work; unlock; work; lock; work; unlock;
• Work depends on load level parameter
• Load level is adjusted, by bisection, until maximum schedulable utilization is reached
• 97% CPU utilizationon 90MHz/33MHz Pentium PC, one CPU
![Page 28: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/28.jpg)
28
GNULLI Lock-Unlock Performance
1.06 microseconds per cycleon 90MHz/33MHz Pentium PC, one CPU
![Page 29: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/29.jpg)
29
Ada Tasking Performance
3.1 us9.7 us4.6 uspo ‘‘rendezvous’’
1.4 us4.7 us3.5 usprotected procedure
1.1 us3.1 us2.3 ussimple protected procedure
RT-Linux threads
Linux threads
FSU threads
These figures are on 166MHz/66MHz Pentium PC
![Page 30: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/30.jpg)
30
What we Knew in 1999
• Linux kernel modules can be written in Ada
• Ada tasking supportable in the Linux kernel
• Ravenscar restrictions are helpful, but tighter than necessary
• Timing predictability is as desired
• Overhead is very low
![Page 31: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/31.jpg)
31
Where we Expected to go
• Get RT Linux port into GNAT distributions
• Improve ease of use
• Further reduce runtime system size
• Add further compiler optimizations
• Add “standard” packages for FIFOs
• Keep up with new versions of RT Linux
• Experiment with sporadic scheduling, dynamic loading, distributed systems annex partitioning
![Page 32: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/32.jpg)
32
Why we are not there
• No fundingfor FSU Ada work
• Changes to RT Linux
• New technical issues related to SMP
• Chairing a growing department
www.cs.fsu.edu
![Page 33: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/33.jpg)
33
Divergent RT Linux Evolution
• Several RTLinux™ versions: 1, 2, 3
• Several more spin-off variants, e.g.– RTAI
• www.aero.polimi.it/projects/rtai
– TimeSys Linux/RT ™• www.timesys.com
– Zentropix Realtime Linux• www.zentropix.co.uk
![Page 34: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/34.jpg)
34
RT Linux Versions
• V1 – the one we targeted• V2 – the current “stable” version
– Starts to be like POSIX threads– Supports SMP
• V3 – the development version– Aims to be closer to POSIX
• Conservative view about adding to API• Maybe converging
![Page 35: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/35.jpg)
35
What we are doing at FSU
• Update to RT Linux Version 2
• SMP support
• Single and queue-per CPU models
• Performance comparisons– C RTLinux versus Ada
– Single timer+ready queues versus per-CPU
– Static versus dynamic queue
![Page 36: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/36.jpg)
36
New Technical Issues
• New RT Linux API– requires GNULLI recoding
• SMP– Breaks old GNULLI environment task mapping
– Opens hard design choices
– Generally adds complexity
![Page 37: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/37.jpg)
37
More Issues
• How to recover from failures in kernel
• Continuing order problems
• Getting “self” depends on CPU– Per-cpu data is all volatile
– frequently accessed for spinlocks
![Page 38: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/38.jpg)
38
Conclusion
• RT Linux V1 GNAT port seems to work, and is in gnat.com baseline, but not in public releases
• RT Linux a valuable platform for Ada
• RT Linux V2 port is not ready yet
• There are some questionsleft…
![Page 39: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/39.jpg)
39
THE END
![Page 40: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/40.jpg)
40
Questions
• Should we revert to Pthreads?
• Is RT Linux the final answer?
• Should we worry about patents?
![Page 41: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/41.jpg)
41
Should we revert to Pthreads?
• Some more overhead would be paid
• RT Linux is moving that direction
• Portability and upkeep would be reduced
• Usual Gnu leverage
• Yodaiken seems opposed to all priority inversion fixes, including ceiling locking
• Convince him?
![Page 42: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/42.jpg)
42
Is RT Linux the final answer?
• Safety could be better
• Linux kernel big, complicated, still there
• Protect RT kernel against Linux kernel?– Separate virtual address space
• Protect RT kernel against threads?
• Debugging support?
• Patent may get in the way of improvements
![Page 43: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/43.jpg)
43
Yodaiken Patent
• US Patent 5995745
• Applied for Nov 1997
• Granted Nov 1999
• “Adding real-time support to general purpose operating systems”
• Liberal (free) licensing for Gnu software
![Page 44: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/44.jpg)
44
Opening the Patent Door Wider
• The Yodaiken RTLinux patent is a peek at a much bigger picture.
• Check out www.uspto.gov/patft.
• Try tracing back the references.
• Many surprising and interesting patents show up.
![Page 45: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/45.jpg)
45
US Patent 5469571
• Lynx Real-Time Systems, Inc
• Applied July 1991
• Granted Nov 1995
• “Operating system architecture using multiple priority light weight kernel task based interrupt handling”
![Page 46: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/46.jpg)
46
US Patent 5515538
• Sun Microsystems, Inc.
• Applied March 1994
• Granted May 1996
• “Apparatus and method for interrupt handling in a multi-threaded operating system kernel”
![Page 47: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/47.jpg)
47
US Patent 5247675
• IBM
• Applied Aug 1991
• Granted Sep 1993
• “Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system”
![Page 48: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/48.jpg)
48
Questions
• Are these patents valid?
• Was there prior art?
• Are the ideas obvious?
• How many more well-known or obvious software ideas are patented or have patents pending?
• Is it safe to write software any more?
![Page 49: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/49.jpg)
49
APPENDIX
![Page 50: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/50.jpg)
50
Kernel Module in C
#define MODULE
#include <linux/module.h>
int init_module (void)
{ printk (“Hello, World\n”); return 0;}
void cleanup_module (void)
{ printk (“Goodby, World!\n”);}
![Page 51: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/51.jpg)
51
Ada Kernel Module
package Hello is
type Aliased_String is array (Positive range <>)
of aliased Character;
pragma Convention (C, Aliased_String);
Kernel_Version : constant Aliased_String
:= "2.0.33" & Character’Val (0);
pragma Export (C, Kernel_Version, kernel_version");
Mod_Use_Count : Integer;
pragma Export (C, Mod_Use_Count, "mod_use_count_");
procedure Printk (Message : String);
pragma Import (C, Printk, "printk");
function Init_Module return Integer;
pragma Export (C, Init_Module, "init_module");
procedure Cleanup_Module;
pragma Export (C, Cleanup_Module, "cleanup_module");
end Hello;
![Page 52: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/52.jpg)
52
Ada Kernel Module (body)
package body Hello is
procedure Hello_Elabb;
pragma Import (Ada, Hello_Elabb, "hello___elabb");
function Init_Module return Integer is
begin Hello_Elabb;
Printk ("Hello, World!" & Character’Val(10));
return 0;
end Init_Module;
procedure Cleanup_Module is
begin Printk ("Goodbye, World!" & Character’Val(10));
end Cleanup_Module;
end Hello;
![Page 53: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/53.jpg)
53
GNULLI Operations
• create/destroy task
• lock/unlock
• (timed) sleep/wakeup
![Page 54: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/54.jpg)
54
Lock Operation on Pthreads
procedure Write_Lock
(L : access Lock; Ceiling_Violation : out Boolean) is
Result : Interfaces.C.int;
Begin
Result := pthread_mutex_lock (L.L’Access);
Ceiling_Violation := Result /= 0;
end Write_Lock;
(Assumes mutexes support ceiling locking, which they generally do not.)
![Page 55: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/55.jpg)
55
Bare Single-CPU Lock Operation
procedure Write_Lock
(L : access Lock; Ceiling_Violation : out Boolean) is
Prio : constant System.Any_Priority :=
Current_Task.LL.Active_Prio;
begin … ceiling check omitted …
L.Pre_Locking_Prio := Prio;
Current_Task.LL.Active_Prio := L.Ceiling_Prio;
if Current_Task.LL.Outer_Lock = null then
Current_Task.LL.Outer_Lock :=
L.all'Unchecked_Access;
end if;
end Write_Lock;
![Page 56: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/56.jpg)
56
SMP Lock
• Needs per-CPU data
• Needs Spin_Lock
![Page 57: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/57.jpg)
57
Unlock Operation on Pthreads
procedure Unlock (L : access Lock) is
Result : Interfaces.C.int;
begin Result := pthread_mutex_unlock (L.L’Access);
end Unlock;
![Page 58: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/58.jpg)
58
Bare Unlock Operationprocedure Unlock (L : access Lock) is
Flags : Integer;
begin
if Current_Task.LL.Outer_Lock = L.all’Unchecked_Access then
Current_Task.LL.Active_Priority :=
Current_Task.LL.Current_Priority;
Current_Task.LL.Outer_Lock := null;
else Current_Task.LL.Active_Priority := L.Pre_Locking_Priority;
end if;
if Current_Task.LL.Active_Priority <
Current_Task.LL.Succ.LL.Active_Priority then
Save_Flags (Flags); -- Saves interrupt mask
Cli; -- Masks interrupts
Delete_From_Ready_Queue(Current_Task);
Insert_In_Ready_Queue (Current_Task);
Restore_Flags (Flags);
Call_Scheduler;
end if;
end Unlock;
![Page 59: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/59.jpg)
59
SMP Unlock
• Needs CPU-specific data
• Needs Spin_Unlock
• Also needs spinlock to protect ready queue, for priority-lowering
• Needs IPI, with single-queue model
![Page 60: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/60.jpg)
60
Sleep on Pthreads
procedure Sleep (Self_ID : Task_ID; Reason : Task_States) is
Result : Interfaces.C.int;
Begin
if Self_ID.Pending_Priority_Change then
Self_ID.Pending_Priority_Change := False;
Self_ID.Base_Priority := Self_ID.New_Base_Priority;
Set_Priority (Self_ID, Self_ID.Base_Priority);
end if;
Result := pthread_cond_wait
(Self_ID.LL.CV’Access, Self_ID.LL.L.L’Access);
pragma Assert (Result = 0 or else Result = EINTR);
end Sleep;
![Page 61: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/61.jpg)
61
Bare Sleep
procedure Sleep(Self_ID : Task_ID; Reason : System.Tasking.Task_States) is
Flags : Integer;begin Self_ID.State := Reason
Save_Flags (Flags); Cli;Delete_From_Ready_Queue (Self_ID);
if Self_ID.LL.Outer_Lock = Self_ID.LL.L’Access thenSelf_ID.LL.Active_Prio := Self_ID.LL.Current_Prio;
Self_ID.LL.Outer_Lock := null;else
Self_ID.LL.Active_Prio := Self_ID.LL.L.Pre_Locking_Prio;end if;
Restore_Flags (Flags); Call_Scheduler;
Write_Lock (Self_ID);end Sleep;
![Page 62: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/62.jpg)
62
SMP Sleep
• Needs Spin_Lock on ready queue
• Needs Spin_Unlock on own lock
![Page 63: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/63.jpg)
63
Wakeup on Pthreads
procedure Wakeup (T : Task_ID; Reason : Task_States) is
Result : Interfaces.C.int;
Begin
Result := pthread_cond_signal (T.LL.CV’Access);
pragma Assert (Result = 0);
end Wakeup;
![Page 64: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/64.jpg)
64
Bare Wakeupprocedure Wakeup
(T : Task_ID; Reason : System.Tasking.Task_States) is
Flags : Integer;
begin T.State := Reason; Save_Flags (Flags);
Cli; -- Disable interrupts.
if Timer_Queue.LL.Succ = T then
if T.LL.Succ = Timer_Queue then No_Timer;
else Set_Timer (T.LL.Succ.LL.Resume_Time);
end if;
end if;
Delete_From_Timer_Queue (T); Insert_In_Ready_Queue (T); Restore_Flags (Flags); Call_Scheduler;
end Wakeup;
![Page 65: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/65.jpg)
65
SMP Wakeup
• Needs Spin_Lock on ready queue
• Needs IPI, with single-queue model
![Page 66: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/66.jpg)
66
Hidden Init/Cleanup_Module
pragma Suppress (All_Checks);
package Demo is
pragma Elaborate_Body;
end Demo;
![Page 67: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/67.jpg)
67
Hidden Init/Cleanup Module
pragma Suppress (All_Checks);
with System.OS_Interface;
package body Demo is
use System.OS_Interface;
task T;
task body T is
begin
Printk("Hello, World!” & ASCII.LF);
end T;
end Demo;
![Page 68: Ada & Embedded/Real Time Linux€¦ · • Ada real-time kernel beneath DOS ... Linux Handlers timer interrupt. 19 Linux Kernel Modules • OS extensibility mechanism • Dynamically](https://reader034.vdocuments.mx/reader034/viewer/2022051923/60109a937e75bb070d018b52/html5/thumbnails/68.jpg)
68
Interval vs. Periodic Timer