avia_av_core.c avia600.ux bzw. avia500.ux löschen
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
avia_av_core.c avia600.ux bzw. avia500.ux löschen
hallo leute,
in der avia_av_core.c wird ja abgefragt welche firmware geladen werden soll.
so dachte ich mir ich bau da nach der abfrage nen remove rein u. lass die unnötige firm durch den treiber löschen, aber das klappt nicht.
folgendes hab ich versucht
#include <stdio.h>
remove("/var/tuxbox/ucodes/avia600.ux");
dies führt aber leider dazu das der treiber danach nicht mehr läuft u. ich nur mehr unresolved symbols habe.
gibts da ne lösung die auch funktioniert ? bzw. gibts da nen befehl der auch funktioniert ?
in der avia_av_core.c wird ja abgefragt welche firmware geladen werden soll.
so dachte ich mir ich bau da nach der abfrage nen remove rein u. lass die unnötige firm durch den treiber löschen, aber das klappt nicht.
folgendes hab ich versucht
#include <stdio.h>
remove("/var/tuxbox/ucodes/avia600.ux");
dies führt aber leider dazu das der treiber danach nicht mehr läuft u. ich nur mehr unresolved symbols habe.
gibts da ne lösung die auch funktioniert ? bzw. gibts da nen befehl der auch funktioniert ?
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Senior Member
- Beiträge: 5071
- Registriert: Dienstag 18. September 2001, 00:00
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
so die besten ...
@AudioSlyer
1.) jou is ein jffsonly
2.) wäre das wohl egal, denn var is überall beschreibbar, außer du hast das ganze image so gepackt das es nicht beschreibbar sein sollte.
3.) jou wäre schön wenn ich dafür den code wüßte bzw. wüßte was ich abfragen soll, um es über das rcS-script zu machen.
4.) hab ich bis jetz nur in dieser datei ne abfage gefunden, die den chip gewisser maßen identifiziert u. somit die richtige firm lädt. deshalb von mir mal dort der erste ansatz.
@rasc
weil ich mein image auch auf mehreren boxen einsetze u. mir der platz schön langsam zu eng wird in meinem jffsonly. u. 128kb sind auch ne menge!
@AudioSlyer
1.) jou is ein jffsonly
2.) wäre das wohl egal, denn var is überall beschreibbar, außer du hast das ganze image so gepackt das es nicht beschreibbar sein sollte.
3.) jou wäre schön wenn ich dafür den code wüßte bzw. wüßte was ich abfragen soll, um es über das rcS-script zu machen.
4.) hab ich bis jetz nur in dieser datei ne abfage gefunden, die den chip gewisser maßen identifiziert u. somit die richtige firm lädt. deshalb von mir mal dort der erste ansatz.
@rasc
weil ich mein image auch auf mehreren boxen einsetze u. mir der platz schön langsam zu eng wird in meinem jffsonly. u. 128kb sind auch ne menge!
-
- Einsteiger
- Beiträge: 337
- Registriert: Mittwoch 2. April 2003, 18:55
@gweny
http://cvs.tuxbox-cvs.sourceforge.net/c ... iew=markup
ist mal interessant durchzustöbern was da alles so abläuft.. ;-)
gruss zor
http://cvs.tuxbox-cvs.sourceforge.net/c ... iew=markup
ist mal interessant durchzustöbern was da alles so abläuft.. ;-)
Code: Alles auswählen
if [ -e /var/etc/.ich_hab_600er ]; then
#lade 600er
else
#lade 500er
fi
-
- Erleuchteter
- Beiträge: 416
- Registriert: Mittwoch 17. Januar 2007, 16:47
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
im code wird ja gecheckt, und danach der code geladen.
wenn du das abwandelst, kannste den anderen code löschen lassen.
das müsste so gehen, aber irgendwie musste noch checken, ob der schon weg ist, damit keine unschönen sachen auftreten.
Code: Alles auswählen
if (!aviarev)
strcat(firmwarePath, "/avia600.ux");
else
strcat(firmwarePath, "/avia500.ux");
Code: Alles auswählen
if (!aviarev)
{
strcat(firmwarePath, "/avia600.ux");
//hier das löschen des avia500 rein
}
else
{
strcat(firmwarePath, "/avia500.ux");
//hier das löschen des avia600 rein
}
-
- Interessierter
- Beiträge: 33
- Registriert: Mittwoch 22. Juni 2005, 18:55
Nicht getestet, aber so sollte es funktionieren:
if (!aviarev) {
strcat(firmwarePath, "/avia500.ux");
unlink(firmwarePath);
firmwarePath[sizeof(firmwarePath) - sizeof("/avia500.ux") - 2] = 0;
strcat(firmwarePath, "/avia600.ux");
}
else {
strcat(firmwarePath, "/avia600.ux");
unlink(firmwarePath);
firmwarePath[sizeof(firmwarePath) - sizeof("/avia600.ux") - 2] = 0;
strcat(firmwarePath, "/avia500.ux");
}
EDIT: Habs gerade kompilieren wollen, jedoch scheint der Compiler den Standarddateilöschfehl (unlink) nicht zu kennen, weiß hier jemand Rat?
if (!aviarev) {
strcat(firmwarePath, "/avia500.ux");
unlink(firmwarePath);
firmwarePath[sizeof(firmwarePath) - sizeof("/avia500.ux") - 2] = 0;
strcat(firmwarePath, "/avia600.ux");
}
else {
strcat(firmwarePath, "/avia600.ux");
unlink(firmwarePath);
firmwarePath[sizeof(firmwarePath) - sizeof("/avia600.ux") - 2] = 0;
strcat(firmwarePath, "/avia500.ux");
}
EDIT: Habs gerade kompilieren wollen, jedoch scheint der Compiler den Standarddateilöschfehl (unlink) nicht zu kennen, weiß hier jemand Rat?
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
-
- Interessierter
- Beiträge: 33
- Registriert: Mittwoch 22. Juni 2005, 18:55
Nun ich bin neu, was das CVS angeht, es wundert mich nur das nicht mal der primitiv-Befehl unlink im Kernelspace nicht verfügbar ist. Würde denn dort ein system("rm Datei"); funktionieren, oder ein fclose(fopen("touchfile", "a")); um ein Touchfile zu erzeugen?Houdini hat geschrieben:tja, wir sind halt im kernelspace da gibbet keine libc Funktionen
-
- Developer
- Beiträge: 279
- Registriert: Mittwoch 26. Juni 2002, 22:19
Damit kannste mit /proc/bus/avia_version die Version abfragen:
Code: Alles auswählen
Index: driver/dvb/drivers/media/dvb/avia/avia_av_proc.c
===================================================================
RCS file: /cvs/tuxbox/driver/dvb/drivers/media/dvb/avia/avia_av_proc.c,v
retrieving revision 1.14
diff -u -r1.14 avia_av_proc.c
--- a/driver/dvb/drivers/media/dvb/avia/avia_av_proc.c 21 Jan 2004 20:02:29 -0000 1.14
+++ b/driver/dvb/drivers/media/dvb/avia/avia_av_proc.c 27 Jul 2007 16:48:01 -0000
@@ -101,10 +101,22 @@
return n;
}
+static int avia_av_proc_read_avia_version( char *page, char **start, off_t off, int count, int *eof, void *data )
+{
+ int len;
+ if (avia_av_is500()) {
+ len = sprintf(page, "avia500\n");
+ } else {
+ len = sprintf(page, "avia600\n");
+ }
+ return len;
+}
+
int avia_av_proc_init(void)
{
struct proc_dir_entry *proc_bus_avia;
struct proc_dir_entry *proc_bus_avia_dram;
+ struct proc_dir_entry *proc_bus_avia_version;
printk("avia_av_proc: $Id: avia_av_proc.c,v 1.14 2004/01/21 20:02:29 carjay Exp $\n");
@@ -130,6 +142,15 @@
}
proc_bus_avia_dram->owner = THIS_MODULE;
+
+ proc_bus_avia_version = create_proc_read_entry( "avia_version", 0444, proc_bus, avia_av_proc_read_avia_version, NULL);
+
+ if (!proc_bus_avia_version) {
+ printk("avia_av_proc: could not create /proc/bus/avia_version");
+ return -ENOENT;
+ }
+
+ proc_bus_avia_version->owner = THIS_MODULE;
return 0;
}
@@ -138,6 +159,7 @@
{
remove_proc_entry("avia_dram", proc_bus);
remove_proc_entry("bitstream", proc_bus);
+ remove_proc_entry("avia_version", proc_bus);
}
#if defined(STANDALONE)
Gruß
Der Papst
Der Papst
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
tut mir leid das ich erst jetz anworten kann, war auf urlaub
aber mal besten dank an papst
@mb405 u. tommisat
das hatte ich versucht, aber hat ja leider nicht geklappt, da ich keinen ordentlichen befehl gefunden hab um was zu löschen.
ich hatte es bis jetz anders gelöst gehabt ...
damit wurde wenigstens ne datei erstellt die den namen have_avia_500 od. have_avia_600 trägt u. somit konnte ich ermitteln welcher chip vorhanden is
dann noch in ein script schreiben
aber mal besten dank an papst
@mb405 u. tommisat
das hatte ich versucht, aber hat ja leider nicht geklappt, da ich keinen ordentlichen befehl gefunden hab um was zu löschen.
ich hatte es bis jetz anders gelöst gehabt ...
Code: Alles auswählen
#include <linux/proc_fs.h>
if (!aviarev)
{
int model;
strcat(firmwarePath, "/avia600.ux");
create_proc_entry("have_avia_600", model, proc_bus);
}
else
{
int model;
strcat(firmwarePath, "/avia500.ux");
create_proc_entry("have_avia_500", model, proc_bus);
}
dann noch in ein script schreiben
Code: Alles auswählen
if [ -e /proc/bus/have_avia_x00 ] && [ -e /var/tuxbox/ucodes/aviax00.ux ]; then
rm /var/tuxbox/ucodes/aviax00.ux
fi
-
- Developer
- Beiträge: 279
- Registriert: Mittwoch 26. Juni 2002, 22:19
-
- Interessierter
- Beiträge: 64
- Registriert: Montag 13. Juni 2005, 17:51
jepp hab ich gesehen u. gleich mal eingebaut
echt super von dir .. danke
u. hier noch die abfrage in der rcS falls es jemand braucht ..
echt super von dir .. danke
u. hier noch die abfrage in der rcS falls es jemand braucht ..
Code: Alles auswählen
avia_version=`cat /proc/bus/avia_version`
if [ $avia_version = "avia500" ] && [ -e /var/tuxbox/ucodes/avia600.ux ]; then
rm /var/tuxbox/ucodes/avia600.ux
else if [ $avia_version = "avia600" ] && [ -e /var/tuxbox/ucodes/avia500.ux ]; then
rm /var/tuxbox/ucodes/avia500.ux
fi
fi