[Oberon] call ioctl() function in linux from AOS
Jörg Straube
joerg.straube at iaeth.ch
Sat Apr 13 09:24:27 CEST 2013
Zdenek
When you include a new exported function ("mmap") into an existing module ("Unix"), you have to recompile ALL upper modules using the modified module.
As "Unix" is a module used by quite some upper Oberon modules, you effectively would have to recompile the whole Oberon system.
So for the next time: better don't touch modules included in the Oberon system unless you know exactly what you're doing.
So, delete your newly generated Unix object file. If you accidentially overwrote "obj/Unix.Obj", you better reinstall Oberon.
Move the "mmap" declaration and initializing code into your program, something like:
MODULE Test;
IMPORT Unix;
VAR
mmap- : PROCEDURE {C} (addr: ADDRESS; length: LONGINT; prot: LONGINT;
flags : LONGINT; fd: LONGINT; offset: LONGINT) : ADDRESS;
PROCEDURE test*();
VAR
a: ADDRESS;
BEGIN
Unix.Dlsym( Unix.libc, "mmap", ADDRESSOF( mmap ) );
a := mmap( parameters as defined above ...);
END test;
END Test.test ~
SystemTools.Free Test ~
Porting a driver code is not a piece of cake...
br
Jörg
Am 13.04.2013 um 08:02 schrieb Zdenek <oberon at moravcik.info>:
> Hi Jörg,
>
> as you wrote module Unix already contains call to function ioctl() which
> I first overlooked.
> Trying to make my code running I had to insert another needed call for
> linux function mmap() because this function is not define in module Unix
> (i.e. in Linux.Unix.Mod)
> So I inserted following code into Unix.Mod:
>
> MODULE Unix;
> ...
> VAR
> mmap- : PROCEDURE {C} ( addr: ADDRESS; length: LONGINT;
> prot: LONGINT; flags : LONGINT; fd: LONGINT; offset: LONGINT) : ADDRESS;
> ...
> BEGIN (* Unix *)
> Dlsym( libc, "mmap", ADDRESSOF( mmap ) );
> ...
> END Unix.
>
> Then I wrote following module:
>
> MODULE Test;
>
> IMPORT Unix;
>
> PROCEDURE test();
> VAR
> a : ADDRESS;
> BEGIN
> a := Unix.mmap(parameters as defined above ...);
> END test;
> (* Test.test ~
> SystemTools.Free Test ~
> *)
> END Test.
>
> It compiled fine but when I try to run Test.test it answers:
>
> WMTextView: Command execution error, res 3405 (Test incompatible with
> Unix / mmap)
>
> Don't know what to do about it ?
>
> Zdenek
>
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/oberon/attachments/20130413/5820d651/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3644 bytes
Desc: not available
Url : https://lists.inf.ethz.ch/pipermail/oberon/attachments/20130413/5820d651/attachment.bin
More information about the Oberon
mailing list