Datei schliessen in einem Process?

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Datei schliessen in einem Process?

 · 
Posted: 28.12.2017 - 15:39  ·  #1
Hallo Rolf, hallt miparo,

ich habe mich ja deswegen schon mit miparo unterhalten, aber mal eine prinzipielle Frage: darf ich in einem Process alles machen, was ich im eigentlichen Programm auch machen kann?
Speziell geht es mir darum:
Code

...
...
Lock(self);
F16_FlushBufSec;
F16_FileClose(Log);
...
...
gDispRefresh;
...
...
Unlock(self);

Wie oben zu sehen, wird der Process ge-lock-t.

Gruss und nen guten Rutsch für alle
Harry
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 05:28  ·  #2
Hi Harry,
warum sollten in einem Prozess irgendwelche Einschränkungen bestehen?
Auch das "normale Programm", das Main, wird bei Multitasking ja ein eigener Prozess.
Man muss hier halt im Hinterkopf haben, dass das "Lock" alle anderen Prozesse (ausser Main)
eventuell lahmlegen kann.
Ein Prozess unterscheidet sich von einem "normalen Programm" doch nur dadurch,
dass er automatisch immer mal wieder irgendwann "dazwischen geschoben" wird.
Dieses "irgendwann" darf natürlich nicht zu Konflikten führen, weil dieser Prozess z.B. eine
Datei schliesst, während ein anderer noch am Schreiben ist.

Gutes Neues und schönen Gruß
Gunter
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 10:10  ·  #3
Hi Gunter,

bist du dir mit dem Lock beim Mail-Process sicher? Im Handbuch steht ja:
Code
Die ganze Rechenzeit des Prozessors wird einem Prozess zur Verfügung gestellt.
Interrupts werden jedoch weiter beantwortet. Gilt auch für Main_Proc.
Ein Lock(Prozess) verhindert das Weiterschalten des Schedulers auf einen anderen Prozess.
Tasks sind davon jedoch nicht betroffen, da diese ähnlich wie Interrupts behandelt werden. 

Wenn das so ist, wäre ich ja froh, denn wenn das eintrifft ist in diesem Fall sowieso nach 1-2s Schluss bzw. keine Spannung mehr da. Der Process soll/darf nicht mehr verlassen werden (loop .... endloop).

Gruss
Harry
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 10:47  ·  #4
Moin Harry,
was macht der Process sonst ?
Treiber im Process ansprechen macht man generel nicht, da der FAT32 ja auch in anderen Funktionen benutzt wird. Wenn das Main gerade schreibt ... 😠
Das gleiche Prob hat Win ja auch.
Da muss man gut aufpassen.

Am besten ist es hier im Main nach allen Schreibzugriffen: FAT16_Write...und dann ein F16_Flush.. , so bleibt nichts im FAT Buffer und es wird alles weggeschrieben. Jetzt kann VCC rugig abnipeln.
Deine Log Datei bleibt aktuell und konstistent.
Das lässt sich im Window 10 auch so einstellen :)

miparo
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 11:09  ·  #5
Hallo miparo,

der Process überwacht die Versorgungsspannung und wenn diese wegfällt, schliesst er die Datei, schaltet eine LED ein und gibt auf dem Display noch ein "Power off" aus. Danach (sofern noch genügend Spannung vorhanden) geht er in eine Endlosschleife. Die Schaltung ist durch 1x 2F-Goldcap gepuffert.

Gruss
Harry
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 11:29  ·  #6
Dann langt ja das F16_Flush im Process und fertig.

Eine Write geht immer so:
Platz in der FAT Tabelle suchen UND diesen Sektor als belegt markieren.
Dateigröße anpassen und jetzt werrden die Daten geschrieben.
Wenn es ein Sektor ( 512B) ist dann wird der sofort geschrieben.
Weniger bleiben evtl im Buffering hängen und werden erst beim nächten R/W geschrieben.
Da kannst du mit dem F16_flush entgegen wirken nach jeden F16_Write...
So bleibt alle konsistent.

miparo
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Datei schliessen in einem Process?

 · 
Posted: 29.12.2017 - 18:35  ·  #7
@Harry
du hast Recht mit dem Main. Das wird wie jeder andere Prozess behandelt und
kommt deshal nach dem Lock eines anderen Prozesses auch nicht mehr dran
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   121   135 · Page-Gen-Time: 0.050588s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI