[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


    NAME

        CreateProc -- Create a new process

    SYNOPSIS
        process = CreateProc( name, pri, seglist, stackSize )
        D0                    D1    D2   D3       D4

        struct msgport *createproc(strptr, long, bptr, long)

    FUNCTION
        CreateProc() creates a new AmigaDOS process of name 'name'.  AmigaDOS
        processes are a superset of exec tasks.

        A seglist, as returned by loadseg(), is passed as 'seglist'.
        This represents a section of code which is to be run as a new
        process. The code is entered at the first hunk in the segment list,
        which should contain suitable initialization code or a jump to
        such.  A process control structure is allocated from memory and
        initialized.  If you wish to fake a seglist (that will never
        have DOS unloadseg() called on it), use this code:

                    DS.L    0   ;Align to longword
                    DC.L    16  ;Segment "length" (faked)
                    DC.L    0   ;Pointer to next segment
                    ...start of code...

        The size of the root stack upon activation is passed as
        'stackSize'.  'pri' specifies the required priority of the new
        process.  The result will be the process msgport address of the new
        process, or zero if the routine failed.  The argument 'name'
        specifies the new process name.  A zero return code indicates
        error.

        The seglist passed to CreateProc() is not freed when it exits; it
        is up to the parent process to free it, or for the code to unload
        itself.

        Under V36 and later, you probably should use createnewproc() instead.

    INPUTS
        name      - pointer to a null-terminated string
        pri       - signed long (range -128 to +127)
        seglist   - BCPL pointer to a seglist
        stackSize - integer (must be a multiple of 4 bytes)

    RESULTS
        process   - pointer to new process msgport

    SEE ALSO
        createnewproc(), loadseg(), unloadseg()