Ejemplo n.º 1
0
int main()
{
	OS_Start();
	//TASK Create
	TASK_Create(task1,1,2);
	TASK_Create(task2,2,5);
	TASK_Create(task3,5,6);
	while(1)
	{
		timer1++;
		TASK_Excute();
		printf("%d\n",timer1);
		sleep(1);
	}
	return 0;
}
Ejemplo n.º 2
0
Archivo: task.c Proyecto: Barrell/wine
/***********************************************************************
 *           TASK_CreateMainTask
 *
 * Create a task for the main (32-bit) process.
 */
void TASK_CreateMainTask(void)
{
    TDB *pTask;
    STARTUPINFOA startup_info;
    UINT cmdShow = 1; /* SW_SHOWNORMAL but we don't want to include winuser.h here */

    GetStartupInfoA( &startup_info );
    if (startup_info.dwFlags & STARTF_USESHOWWINDOW) cmdShow = startup_info.wShowWindow;
    pTask = TASK_Create( NULL, cmdShow, NULL, 0 );
    if (!pTask)
    {
        ERR("could not create task for main process\n");
        ExitProcess(1);
    }

    pTask->flags        |= TDBF_WIN32;
    pTask->hInstance     = 0;
    pTask->hPrevInstance = 0;
    pTask->teb           = NtCurrentTeb();

    /* Add the task to the linked list */
    /* (no need to get the win16 lock, we are the only thread at this point) */
    TASK_LinkTask( pTask->hSelf );
    main_task = pTask->hSelf;
}
Ejemplo n.º 3
0
Archivo: task.c Proyecto: Barrell/wine
/***********************************************************************
 *           TASK_SpawnTask
 *
 * Spawn a new 16-bit task.
 */
HTASK16 TASK_SpawnTask( NE_MODULE *pModule, WORD cmdShow,
                        LPCSTR cmdline, BYTE len, HANDLE *hThread )
{
    struct create_data *data = NULL;
    WIN16_SUBSYSTEM_TIB *tib;
    TDB *pTask;

    if (!(pTask = TASK_Create( pModule, cmdShow, cmdline, len ))) return 0;
    if (!(tib = allocate_win16_tib( pTask ))) goto failed;
    if (!(data = HeapAlloc( GetProcessHeap(), 0, sizeof(*data)))) goto failed;
    data->task = pTask;
    data->tib = tib;
    if (!(*hThread = CreateThread( NULL, 0, task_start, data, 0, NULL ))) goto failed;
    return pTask->hSelf;

failed:
    if (tib) free_win16_tib( tib );
    HeapFree( GetProcessHeap(), 0, data );
    TASK_DeleteTask( pTask->hSelf );
    return 0;
}