Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - sence123

Seiten: [1]
1
Lowlevel-Coding / Re: Syscall - Übungsaufgabe - Fehler
« am: 12. January 2010, 23:35 »
ups sry hab noch nen problem mit dem syscall selbst :/

war happy mit Gauss.c jedoch nicht mit meinem Syscall implementieren und 64 bit systemen :////

my fault
2
Lowlevel-Coding / Re: Syscall definieren.
« am: 12. January 2010, 23:31 »
hey, ich nimm es dir nicht übel :- )
eigentlich hast du recht.

aber leider nein, habe bis jetzt alles ohne hilfe hinbekommen, jedoch wurde mir dort einfach ein brocken vorgelegt und sowas wie, hier fress, wenn ich das sagen darf.

zudem wird in dem Lehrbrief (fern studium) noch mit dem alten kernen 2.6.1 gearbeitet..... was mich auch schon nervt, da syscall ein paar sprünge später anders anfgerufen wird.


zudem wurde im lernbrief die defination des eigenen aufrufes nicht mit in syscall.h erläutert, was ich in anderen Tutorials fand.

ich erhalte mehrere fragen von anderen Mitschülern bezüglich dieser Aufgabe, somit bestätigt das die unausführlichkeit des Lernb.

deshalb suche ich hier rat

3
Lowlevel-Coding / Syscall definieren.
« am: 12. January 2010, 17:02 »
Hallo,

ich benötige kurz mal hilfe bei einer implementation eines Syscalls unter x86_64bit System:

der code (übungsaufgabe)
# include <linux/linkage.h>

asmlinkage long sys_prosys(long n) {
long ergebnis=0;
int i;

for(i=1; i<=10; i++) {
ergebnis +=i;
}
ergebnis = ergebnis + n;
return ergebnis
}

1. ich erstelle einen neuen Ordner im Patch oder kompletten source Kernel prosys/

2. erstelle ich das Makefile im selben ordner:
obj-y := prosys.o

3. in globalen Makefile eintragen:
core-y. += kernel/ mm/ fs/ usw ... ... ... .... prosys/

4. dies in ter unistd.h eintragen
#define __NR_prosys 242

5. #define NR_syscalls um ein erhöhen

6. in arch/z.b i386/kernel in der datei syscall_table.S
.long sys_prosys
eintragen

7. wie mache ich das nun bei x86_64 bit systemen ?

vielen Dank
4
Lowlevel-Coding / Re: Syscall - Übungsaufgabe - Fehler
« am: 12. January 2010, 16:54 »
Gelöst

Ich lösche dies nicht, da dies als Hilfe anderer dienen kann.
5
Lowlevel-Coding / Re: Syscall - Übungsaufgabe - Fehler
« am: 11. January 2010, 14:05 »
Hallo,

Vielen Dank!!!!!!!!

Gauss.C funktioniert nun nice :-)


nun jedoch noch ein Problem:

ich musste ein Systemcall definieren (prosys):


#include <linux/linkage.h>

asmlinkage long sys_prosys(long n){

long ergebnis=0;
int i;

for(i=1; i<=10;i++) {
ergebnis +=i;
}
printf("Vorläufiges Ergebnis: %d \n", ergebnis);
ergebnis = ergebnis + n;

return ergebnis;
}


ich habe das Makefile erstellt
obj-y := prosys.o

dann das ganze in /usr/src/linux/linux-2.6.32-2/prosys/ abgelegt.

die ergänzungen im Globalen Makefile hinzugefügt:

core-y. += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ prosys/
gemacht.

und in der unistd.h
den Eintag #define __NR_prosys 242 hinzugefügt.

in der syscall_table32:
.long sys_prosys


wenn ich das programm Gauss ausführe erhalte ich:
als ergebnis -1
also irgendwas stimmt da noch nicht :/

Vielen Dank für die Hilfe!!!
6
Lowlevel-Coding / Re: Syscall - Übungsaufgabe - Fehler
« am: 10. January 2010, 17:53 »
Hallo nochmal,

Also ich habe nun den prototypen (prosys.h) erstellt.
jedoch noch der selbe Fehler oO

oder hab ich noch etwas falsches vorliegen ?

danke
7
Lowlevel-Coding / Re: Syscall - Übungsaufgabe - Fehler
« am: 10. January 2010, 17:28 »
Hey,

könntest du mir bitte kurz die Dateien Posten, wie du es meinst ?

hab leider sehr wenig plan davon , muss das jedoch als Übungsaufgabe für das Studium machen.

Es wurde kurz C angesprochen dann uns der Brocken mit Syscall vorgelegt.......

wenn du es mir kurz niederschreiben könntest, wäre ich dir wirklich sehr verbunden.

Dann würde ich es auch nachvollziehen können.

Vielen Dank
8
Lowlevel-Coding / Syscall - Übungsaufgabe - Fehler
« am: 10. January 2010, 15:00 »
Hallo Forum,

Ich muss für eine Übungsaufgabe einen Syscall definieren und diesen von einem C Programm aus nutzen. Das C Programm wird über ein Shellscript aufgerufen und es wird ein Parameter überreicht.

Das Problem ist die kompilierung von Gauss.c
ich herhalte den Fehler bei :
gcc Gauss.c -o gauss

gauss.c:7: error: expected declaration specifiers or ‘...’ before ‘prosys’
gauss.c:7: warning: data definition has no type or storage class

Zudem würde ich gerne Wissen ob meine Lösung stimmt ? (bin blutiger Anfänger darin)

der Syscall prosys.c :

#include <linux/linkage.h>


asmlinkage long sys_prosys(long n) {

long ergebnis=0;
int i;

for(i=1; i<=10;i++) {
ergebnis +=i;
}
ergebnis = ergebnis + n;

return ergebnis;
}


Die C Datei, welche den Syscall nutzt, Gauss.C :
# include <stdio.h>
# include <linux/unistd.h>
# include <errno.h>
# include <sys/syscall.h>
# define __NR_prosys 320

_syscall0(long, prosys);

void main(int args, char* argv[])
{
printf("Berechnung nach der Gauß-Formel \n");
printf("Die Summe ist: %d \n", prosys(argv[1]) );
}


das Shellscript brauche ich nicht hier zu posten, da dies funktioniert und auch den Parameter weitergibt. Sollte ich es dennoch posten müssen, gebt mir bitte kurz bescheid.


Vielen herzlichen Dank!!

Mit freundlichen Grüßen

Marco
Seiten: [1]

Einloggen