Difference between revisions of "linux/kernel/module language feature"

From Free Pascal wiki
Jump to navigationJump to search
(New page: =overview= =Language enhancement= =Working details=)
 
Line 1: Line 1:
 
=overview=
 
=overview=
 +
The purpose of this page is to give a specification of a FPC feature allowing writing (Linux) kernel modules using FPC. The main purpose is to an easy syntax hiding all the details of sectioning and linking. The ultimate goal of these wiki pages is to provide a proposal for a future support of natural linux kernel module support in particular and driver support in general (for win32...) A dedicated page module language feature is intended to provide specification for this future support.
 
=Language enhancement=
 
=Language enhancement=
 +
The easiest way to illustrate this is using the following example
 +
module kpmod;
 +
uses unit1, unit2,...unitn;
 +
const
 +
  MODULE_NAME = 'kpmod';
 +
type
 +
  TType = some type;
 +
const
 +
  aConst = a value;
 +
initialization
 +
  {Module initialization code}
 +
  printk(KERN_INFO + 'Module "%s" is being loaded'#10, MODULE_NAME);
 +
finalization
 +
  {Module cleanup code}
 +
  printk(KERN_INFO + 'Module "%s" is being unloaded'#10, MODULE_NAME);
 +
end.
 
=Working details=
 
=Working details=

Revision as of 14:56, 6 October 2007

overview

The purpose of this page is to give a specification of a FPC feature allowing writing (Linux) kernel modules using FPC. The main purpose is to an easy syntax hiding all the details of sectioning and linking. The ultimate goal of these wiki pages is to provide a proposal for a future support of natural linux kernel module support in particular and driver support in general (for win32...) A dedicated page module language feature is intended to provide specification for this future support.

Language enhancement

The easiest way to illustrate this is using the following example

module kpmod;
uses unit1, unit2,...unitn;
const
 MODULE_NAME = 'kpmod';
type
  TType = some type;
const 
  aConst = a value;
initialization
  {Module initialization code}
  printk(KERN_INFO + 'Module "%s" is being loaded'#10, MODULE_NAME);
finalization
  {Module cleanup code}
  printk(KERN_INFO + 'Module "%s" is being unloaded'#10, MODULE_NAME);
end.

Working details