@teh_KaiN, post #1
@Hexmage960, post #2
@teh_KaiN, post #3
Zastanawiam się tylko czemu fwrite wywoływane w tasku miało prawo działać na uchwytach plików, które były otwarte przez program główny.
Nazewnictwo w tych kwestiach jest jeszcze dla mnie mgliste i szukałem bardziej czegoś w rodzaju wątków, niż procesu, jeśli skorzystać z definicji kierujących mainstreamowymi OSami.
@teh_KaiN, post #3
@Krashan, post #5
Nazewnictwo: w mainstreamowych systemach procesy mają osobne przestrzenie adresowe.
@Krashan, post #5
@Krashan, post #7
@teh_KaiN, post #8
CreateNewProc niestety nie użyję bo V36 a KS1.3 ma się zbyt dobrze by go olać.Im bardziej będziemy go jako programiści olewać, tym szybciej przestanie mieć się dobrze. Kicka 3.0 miałem w A500 w 1993 roku... Niemniej, wracając do sedna, w dokumentacji do LoadSeg() masz napisane jak zrobić „oszukaną” seglistę z kodu, który i tak już masz w pamięci.
@Krashan, post #10
@teh_KaiN, post #8
To teraz idąc dalej w gęstwinę - argument seglist wygląda strasznie. Jak rozumiem jest on po to, by z hunka wyciągnąć odpowiednią sekcję (segment) funkcją LoadSeg i rezultat przekazać tam?
; Nagłówek segmentu: DS.L 0 ;Align to longword DC.L 16 ;Segment "length" (faked) DC.L 0 ;Pointer to next segment ...start of code...
@Hexmage960, post #12
typedef struct _tSeg { ULONG ulSegSize; ///< sizeof(struct tCodeHeader) ULONG ulNextSeg; ///< Must be NULL UWORD uwJumpInstr; ///< Set to 0x4EF9 (a jump instruction) void (*pFn)(void); ///< Pointer to the function } tSeg; const tSeg s_sFakeSeg = {sizeof(tSeg), 0, 0x4EF9, workerMain}; // Gdzieś w kodzie pResult = CreateProc( "OpenFire init proc", 0, ((ULONG)&s_sFakeSeg.ulNextSeg) >> 2, WORKER_STACK_SIZE );
@kiero, post #14
/* Convert BPTR to typical C pointer */ #ifdef OBSOLETE_LIBRARIES_DOS_H #define BADDR( bptr ) (((ULONG)bptr) << 2) #else /* This one has no problems with CASTing */ #define BADDR(x) ((APTR)((ULONG)(x) << 2)) #endif /* Convert address into a BPTR */ #define MKBADDR(x) (((LONG)(x)) >> 2)
@Hexmage960, post #16
Przeczytałem w AmigaDOS Manual, że BPTR jest przesunięty dlatego by mieć zawsze pewność, że adres będzie podzielny przez 4.
@Hexmage960, post #18
@teh_KaiN, post #19