コード例 #1
0
void test_insert_2_process_in_shedular(){
    Shedular* shedular;
    shedular = create();
    insertProcess(shedular ,2 ,4);
    insertProcess(shedular ,10 ,3);
    ASSERT(10 == shedular->head->time);
    ASSERT(3 == shedular->head->priority);
}
コード例 #2
0
ファイル: schedularTest.c プロジェクト: kaurTanbir/DSA
void test_add_process_with_priority_higher_than_first_process(){
        Status statusp1 = {0,1,0};
        Process p1 = {"p1",1000,statusp1,3,NULL};
        Process p2 = {"p2",500,statusp1,1,NULL};
        queue = create();
        ASSERT(1 == insertProcess(queue, &p1));
        ASSERT(2 == insertProcess(queue, &p2));
}
コード例 #3
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_3_adds_process_that_have_high_priority_rather_than_first(){
    Scheduler expected = {NULL,0};
    Status status = {0,1,0};
    Process firstProcess = {"firstProcess",3000,status,7,NULL};
    Process secondProcess = {"secondProcess",900,status,1,NULL};
    q = create();
    ASSERT(1 == insertProcess(q, &firstProcess,compareInt));
    ASSERT(2 == insertProcess(q, &secondProcess,compareInt));
    ASSERT(q->front == &secondProcess);
    ASSERT(q->front->next == &firstProcess);
}
コード例 #4
0
ファイル: schedularTest.c プロジェクト: kaurTanbir/DSA
void test_remove_processes_in_middle(){
        Process* res;
        Status statusp1 = {0,1,0};
        Process p1 = {"p1",100,statusp1,5,NULL};
        Process p2 = {"p2",0,statusp1,1,NULL};
        queue = create();
        insertProcess(queue, &p1);
        insertProcess(queue, &p2);
        res = removeProcess(queue);
        ASSERT(&p2 == res);
}
コード例 #5
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_7_removes_processes_in_middle(){
    Status statusp1 = {0,1,0};
    Process process1 = {"process1",1000,statusp1,1,NULL};
    Process process2 = {"process2",0,statusp1,5,NULL};
    Process process3 = {"process3",1000,statusp1,7,NULL};
    q = create();
    insertProcess(q, &process1,compareInt);
    insertProcess(q, &process2,compareInt);
    insertProcess(q, &process3,compareInt);
    ASSERT(2 == removeProcess(q));
    ASSERT(q->front->next == &process3);
}
コード例 #6
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_9_removes_first_process_in_many(){
    Status statusp1 = {0,1,0};
    Process process1 = {"process1",0,statusp1,1,NULL};
    Process process2 = {"process2",10,statusp1,5,NULL};
    Process process3 = {"process3",65,statusp1,7,NULL};
    q = create();
    insertProcess(q, &process1,compareInt);
    insertProcess(q, &process2,compareInt);
    insertProcess(q, &process3,compareInt);
    ASSERT(2 == removeProcess(q));
    ASSERT(q->front == &process2);
}
コード例 #7
0
ファイル: schedularTest.c プロジェクト: kaurTanbir/DSA
void test_remove_last_process(){
        Process* res;
        Status statusp1 = {0,1,0};
        Process p1 = {"p1",1000,statusp1,1,NULL};
        Process p2 = {"p2",10,statusp1,5,NULL};
        Process p3 = {"p3",0,statusp1,7,NULL};
        queue = create();
        insertProcess(queue, &p1);
        insertProcess(queue, &p2);
        insertProcess(queue, &p3);
        res = removeProcess(queue);
        ASSERT(&p3 == res);
}
コード例 #8
0
ファイル: 12-2.c プロジェクト: c475/tlpi-homework-notes
int main(int argc, char *argv[])
{
    DIR *dirp;
    struct dirent *dp;

    Status *status;
    Status *previous = NULL;

    dirp = opendir("/proc/");

    while ((dp = readdir(dirp)) != NULL) {

        if (isNumericString(dp->d_name)) {

            status = getProcessStatus(atoi(dp->d_name));

            if (status != NULL) {
                insertProcess(previous, status);
                previous = status;
            }

        }

    }

    draw(status);

    freeAll(previous);
    closedir(dirp);

    exit(EXIT_SUCCESS);
}
コード例 #9
0
		virtual void construct(std::shared_ptr<library::XML> xml) override
		{
			//--------
			// CONSTRUCT ROLES
			//--------
			// CLEAR ORDINARY ROLES
			process_map_.clear();

			// CREATE ROLES
			if (xml->has("processes") == true && xml->get("processes")->front()->has("process") == true)
			{
				std::shared_ptr<library::XMLList> &role_xml_list = xml->get("processes")->front()->get("process");
				for (size_t i = 0; i < role_xml_list->size(); i++)
				{
					std::shared_ptr<library::XML> &role_xml = role_xml_list->at(i);

					// CONSTRUCT ROLE FROM XML
					std::shared_ptr<DistributedProcess> role(createProcess(role_xml));
					role->construct(role_xml);

					// AND INSERT TO ROLE_MAP
					insertProcess(role);
				}
			}

			//--------
			// CONSTRUCT SYSTEMS
			//--------
			super::construct(xml);
		};
コード例 #10
0
void test_insert_a_process_in_empty_shedular(){
    Shedular* shedular;
    shedular = create();
    insertProcess(shedular ,2 ,4);
    ASSERT(2 == shedular->head->time);
    ASSERT(4 == shedular->head->priority);
}
コード例 #11
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_6_removes_first_which_is_only_process(){
    Status statusp1 = {0,1,0};
    Process process1 = {"process1",0,statusp1,5,NULL};
    q = create();
    insertProcess(q, &process1,compareInt);
    ASSERT(0 == removeProcess(q));
    ASSERT(NULL == q->front);
}
コード例 #12
0
ファイル: schedularTest.c プロジェクト: kaurTanbir/DSA
void test_remove_first_and_only_process(){
        Status statusp1 = {0,1,0};
        Process p1 = {"p1",0,statusp1,5,NULL};
        Process* res;
        queue = create();
        insertProcess(queue, &p1);
        res = removeProcess(queue);
        ASSERT(&p1 == res);
}
コード例 #13
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_4_adds_process_with_priority_in_between_process_queue(){
    Scheduler expected = {NULL,0};
    Status status = {0,1,0};
    Process *second,*third;
    Process firstProcess = {"First Process",3000,status,7,NULL};
    Process secondProcess = {"Second Process",900,status,1,NULL};
    Process thirdProcess = {"Third Process",400,status,2,NULL};
    q = create();
    ASSERT(1 == insertProcess(q, &firstProcess,compareInt));
    ASSERT(2 == insertProcess(q, &secondProcess,compareInt));
    ASSERT(3 == insertProcess(q, &thirdProcess,compareInt));
    ASSERT(q->front == &secondProcess);
    second = q->front->next;
    third = second->next;
    ASSERT(second == &thirdProcess);
    ASSERT(third == &firstProcess);
    ASSERT(third->next == NULL);
}
コード例 #14
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_2_adds_front_process(){
    Scheduler expected = {NULL,0};
    Status status = {0,1,0};
    Process firstProcess = {"firstProcess",3000,status,10,NULL};
    q = create();
    ASSERT(1 == insertProcess(q, &firstProcess,compareInt));
    ASSERT(q->front == &firstProcess);
    ASSERT(q->front->next == NULL);
}
コード例 #15
0
void test_4_inserts_process_in_scheduler(){
    Process process1 = {"Process1",10,1,NULL};
    Scheduler *scheduler = createScheduler(10);
    int result;
    result = insertProcess(scheduler,&process1);
    ASSERT(scheduler->head == &process1);
    ASSERT(scheduler->total == 1);
    ASSERT(result == 1);
};
コード例 #16
0
ファイル: kernel.c プロジェクト: jcaracciolo/Arqui2016
int main()
{

    print("HOLA");


	setupEverything();

	void ** pargs= (void**)malloc(sizeof(void*));
	pargs[0] = (void*)"init";
	insertProcess(&init, 1, pargs);
	pargs[0] = (void*)"shell";
	insertProcess(sampleCodeModuleAddress, 1, pargs);
	setForeground(1);
 	beginScheduler();

 	//((EntryPoint)sampleCodeModuleAddress)();

	return 0;
}
コード例 #17
0
ファイル: os-schedulerTest.c プロジェクト: KajalJadhav/DSA
void test_5_adds_process_with_very_low_priority(){
    Status statusp1 = {0,1,0};
    Process *second,*third,*fourth,*fifth;
    Process process1 = {"process1",1000,statusp1,5,NULL};
    Process process2 = {"process2",500,statusp1,1,NULL};
    Process process3 = {"process3",400,statusp1,3,NULL};
    Process process4 = {"process4",400,statusp1,2,NULL};
    Process process5 = {"pprocess5",400,statusp1,8,NULL};
    q = create();
    ASSERT(1 == insertProcess(q, &process1,compareInt));
    ASSERT(2 == insertProcess(q, &process2,compareInt));
    ASSERT(3 == insertProcess(q, &process3,compareInt));
    ASSERT(4 == insertProcess(q, &process4,compareInt));
    ASSERT(5 == insertProcess(q, &process5,compareInt));
    second = q->front->next;
    third = second->next;
    fourth = third->next;
    fifth = fourth->next;
    ASSERT(fifth == &process5);
    ASSERT(NULL == fifth->next);
}
コード例 #18
0
ファイル: shell.c プロジェクト: SOII-2016/shelldoge
void executeExternalCommand(char *cmd) {
	int bgFg = getFgBg(cmd);	/* fg(0) or bg(1) */
	int status;
	
	pid_t pid = fork();

    if(pid < 0) {
        perror("Fork error, pid < 0");
	/* parent */
	} else if(pid > 0) {
		/* set process group ID of child to self pid */
		/* will suspend when receive SIGTTIN and SIGTTOU signals */
		setpgid(pid, pid);

		/* set terminal control to new process group with child */
		tcsetpgrp(STDIN_FILENO, pid);

		/* insert process in the list */
		insertProcess(pid, bgFg, cmd);

		if(processList.current->process.status == FOREGROUND) {
			/* wait child finish */
			waitpid(pid, &status, WUNTRACED);
		}

		/* parent regains terminal control */
		tcsetpgrp(STDIN_FILENO, getpgid(0));
	/* child */
    } else {
		/* signals SIGTSTP and SIGINT will show default behavior in child */
		defaultSignals();

		/* set group id of child to self pid */
		/* suspend when receive signals SIGTTIN and SIGTTOUT */
		/* the child could go through exec before the parent set the group */
		setpgid(0, 0);

		/* try to execute command */
		analyseCommand(cmd);
	}
}
コード例 #19
0
void OdroidFlashManager::updateProcessView()
{
    // maintain correct process view
    if(mAppSettings->flashMode()) // if write mode
    {
        if(mRunningProcesses.contains(READING_IMAGE) || mRunningProcesses.contains(READING_IMAGE_VERIFY))
        {
            mRunningProcesses.clear();
            emit clearProcessList();
        }
        if(mAppSettings->useCompression()) // should decompress before write
        {
            if(!mRunningProcesses.contains(DECOMPRESSING))
            {
                if(mRunningProcesses.isEmpty())
                {
                    emit appendProcess("DECOMPRESS");
                    mRunningProcesses.append(DECOMPRESSING);
                }
                else
                {
                    emit insertProcess(0,"DECOMPRESS");
                    mRunningProcesses.insert(0,DECOMPRESSING);
                }
            }
            if(mAppSettings->deleteAfterDecompress())
            {
                if(mRunningProcesses.contains(DELETE_IMAGE))
                {
                    int indexd(-1);
                    if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0)
                    {
                        emit removeProcessAt(indexd);
                        mRunningProcesses.removeAll(DELETE_IMAGE);
                    }
                }
                emit appendProcess("DELETE IMG");
                mRunningProcesses.append(DELETE_IMAGE);
            }
            else
            {
                int indexd(-1);
                if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0)
                {
                    emit removeProcessAt(indexd);
                    mRunningProcesses.removeAll(DELETE_IMAGE);
                }
            }

        }
        else
        {
            int index(mRunningProcesses.indexOf(DECOMPRESSING));
            if(index >=0)
            {
                emit removeProcessAt(index);
                mRunningProcesses.removeAll(DECOMPRESSING);
            }
            int indexd(mRunningProcesses.indexOf(DELETE_IMAGE));
            if(indexd >=0)
            {
                emit removeProcessAt(indexd);
                mRunningProcesses.removeAll(DELETE_IMAGE);
            }

        }
        if(mAppSettings->verifyFlash()) // verify write
        {
            int index(mRunningProcesses.indexOf(WRITING_IMAGE));
            if(index >= 0)
            {
                emit removeProcessAt(index);
                mRunningProcesses.removeAt(index);
            }
            if(!mRunningProcesses.contains(WRITING_IMAGE_VERIFY))
            {
                if(mAppSettings->useCompression())
                {
                    emit insertProcess(1,"WRITE IMG(V)");
                    mRunningProcesses.insert(1,WRITING_IMAGE_VERIFY);
                }
                else
                {
                    emit insertProcess(0,"WRITE IMG(V)");
                    mRunningProcesses.insert(0,WRITING_IMAGE_VERIFY);
                }
            }
        }
        else
        {
            int index(mRunningProcesses.indexOf(WRITING_IMAGE_VERIFY));
            if(index >= 0)
            {
                emit removeProcessAt(index);
                mRunningProcesses.removeAt(index);
            }
            if(!mRunningProcesses.contains(WRITING_IMAGE))
            {
                if(mAppSettings->useCompression())
                {
                    emit insertProcess(1,"WRITE IMG");
                    mRunningProcesses.insert(1,WRITING_IMAGE);
                }
                else
                {
                    emit insertProcess(0,"WRITE IMG");
                    mRunningProcesses.insert(0,WRITING_IMAGE);
                }
            }
        }
        if(mAppSettings->writeBootIni())
        {
            if(!mRunningProcesses.contains(WRITING_BOOT))
            {
                if(mRunningProcesses.contains(DELETE_IMAGE))
                {
                    int delete_index = mRunningProcesses.indexOf(DELETE_IMAGE);
                    emit insertProcess(delete_index-1,"WRITE BOOT");
                    mRunningProcesses.insert(delete_index-1,WRITING_BOOT);
                }
                else
                {
                    emit appendProcess("WRITE BOOT");
                    mRunningProcesses.append(WRITING_BOOT);
                }
            }
        }
        else
        {
            int indexw(-1);
            if((indexw = mRunningProcesses.indexOf(WRITING_BOOT)) >=0)
            {
                emit removeProcessAt(indexw);
                mRunningProcesses.removeAll(WRITING_BOOT);
            }
        }

    }
    else // read mode
    {
        if(mRunningProcesses.contains(WRITING_IMAGE) || mRunningProcesses.contains(WRITING_IMAGE_VERIFY))
        {
            mRunningProcesses.clear();
            emit clearProcessList();
        }
        if(mAppSettings->verifyFlash())
        {
            if(mRunningProcesses.isEmpty())
            {
                emit appendProcess("READ IMG(V)");
                mRunningProcesses.append(READING_IMAGE_VERIFY);
            }
            else
            {
                int read_index(-1);
                int readv_index(-1);
                if((read_index = mRunningProcesses.indexOf(READING_IMAGE)) >= 0 ||  (readv_index = mRunningProcesses.indexOf(READING_IMAGE_VERIFY)) >= 0)
                {
                    if(read_index >= 0)
                    {
                        emit removeProcessAt(read_index);
                        mRunningProcesses.removeAll(READING_IMAGE);
                    }
                    if(readv_index >= 0)
                    {
                        emit removeProcessAt(readv_index);
                        mRunningProcesses.removeAll(READING_IMAGE_VERIFY);
                    }
                }
                emit insertProcess(0,"READ IMG(V)");
                mRunningProcesses.insert(0,READING_IMAGE_VERIFY);
            }
        }
        else
        {
            if(mRunningProcesses.isEmpty())
            {
                emit appendProcess("READ IMG");
                mRunningProcesses.append(READING_IMAGE);
            }
            else
            {
                int read_index(-1);
                int readv_index(-1);
                if((read_index = mRunningProcesses.indexOf(READING_IMAGE)) >= 0 ||  (readv_index = mRunningProcesses.indexOf(READING_IMAGE_VERIFY)) >= 0)
                {
                    if(readv_index >= 0)
                    {
                        emit removeProcessAt(readv_index);
                        mRunningProcesses.removeAll(READING_IMAGE_VERIFY);
                    }
                    if(read_index >= 0)
                    {
                        emit removeProcessAt(read_index);
                        mRunningProcesses.removeAll(READING_IMAGE);
                    }
                }
                emit insertProcess(0,"READ IMG");
                mRunningProcesses.insert(0,READING_IMAGE);
            }
        }
        if(mAppSettings->useCompression())
        {
            int index(-1);
            if((index = mRunningProcesses.indexOf(COMPRESSING)) >= 0)
            {
                emit removeProcessAt(index);
                mRunningProcesses.removeAll(COMPRESSING);
            }

            emit appendProcess("COMPRESS");
            mRunningProcesses.append(COMPRESSING);
            if(mAppSettings->deleteAfterCompress())
            {
                int index(-1);
                if((index = mRunningProcesses.indexOf(DELETE_IMAGE) ) >=0)
                {
                    emit removeProcessAt(index);
                    mRunningProcesses.removeAll(DELETE_IMAGE);
                }
                emit appendProcess("DELETE IMG");
                mRunningProcesses.append(DELETE_IMAGE);
            }
            else
            {
                int indexd(-1);
                if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0)
                {
                    emit removeProcessAt(indexd);
                    mRunningProcesses.removeAll(DELETE_IMAGE);
                }
            }

        }
        else
        {
            int cindex(-1);
            if((cindex = mRunningProcesses.indexOf(COMPRESSING)) >= 0)
            {
                    emit removeProcessAt(cindex);
                    mRunningProcesses.removeAll(COMPRESSING);
            }
            int indexd(-1);
            if((indexd = mRunningProcesses.indexOf(DELETE_IMAGE)) >=0)
            {
                emit removeProcessAt(indexd);
                mRunningProcesses.removeAll(DELETE_IMAGE);
            }

        }
        if(mAppSettings->writeBootIni())
        {
            if(mAppSettings->preserveBootIni())
            {
                if(mRunningProcesses.isEmpty())
                {
                    if(mAppSettings->preserveBootIni())
                    {
                        mRunningProcesses.append(READING_BOOT);
                        emit appendProcess("READ BOOT");
                    }
                    emit appendProcess("WRITE BOOT");
                    mRunningProcesses.append(WRITING_BOOT);
                }
                else
                {
                    emit insertProcess(0,"READ BOOT");
                    mRunningProcesses.insert(0,READING_BOOT);
                    emit insertProcess(1,"WRITE BOOT");
                    mRunningProcesses.insert(1,WRITING_BOOT);
                }
                emit appendProcess("RESTORE BOOT");
                mRunningProcesses.append(RESTORING_BOOT);
            }
            else
            {
                int restore(-1);
                int read(-1);
                int write(-1);
                if((restore = mRunningProcesses.indexOf(RESTORING_BOOT)))
                mRunningProcesses.removeAll(READING_BOOT);
                mRunningProcesses.removeAll(WRITING_BOOT);
                emit appendProcess("WRITE BOOT");
                mRunningProcesses.append(WRITING_BOOT);
            }

        }
        else
        {
            // fill in removal
        }

    }
}
コード例 #20
0
void CDlgProcessSequence::OnInsertBefore()
{
	insertProcess(TRUE);
}
コード例 #21
0
void CDlgProcessSequence::OnInsertAfter()
{
	insertProcess(FALSE);
}
コード例 #22
0
ファイル: schedularTest.c プロジェクト: kaurTanbir/DSA
void test_add_first_process(){
        Status statusp1 = {0,1,0};
        Process p1 = {"p1",1000,statusp1,3,NULL};
        queue = create();
        ASSERT(1 == insertProcess(queue, &p1));
}
コード例 #23
0
ファイル: shell.c プロジェクト: SOII-2016/shelldoge
void executePipe(char *line, char *cmd) {
	int bgFg = getFgBg(cmd);	/* fg(0) or bg(1) */
	int status;

	pid_t pid = fork();

	if(pid < 0) {
		perror("Fork error, pid < 0");
	/* parent */
	} else if(pid > 0) {
		/* set process group ID of child to self pid */
		/* will suspend when receive SIGTTIN and SIGTTOU signals */
		setpgid(pid, pid);

		/* set terminal control to new process group with child */
		tcsetpgrp(STDIN_FILENO, pid);

		/* insert process in the list */
		insertProcess(pid, bgFg, cmd);


		if(processList.current->process.status == FOREGROUND) {
			/* wait child finish */
			waitpid(pid, &status, WUNTRACED);
		}

		/* parent regains terminal control */
		tcsetpgrp(STDIN_FILENO, getpgid(0));
	/* child */
	} else {
		/* signals SIGTSTP and SIGINT will show default behavior in child */
		defaultSignals();
		
		/* set group id of child to self pid */
		/* suspend when receive signals SIGTTIN and SIGTTOUT */
		/* the child could go through exec before the parent set the group */
		setpgid(0, 0);

        int startLine = 0;	/* search begin of next expression */
        int start, end;		/* expression delimiters */
        char *previousCmd;
		
		/* while find commands between pipes */
        while(setExpressionDelimiters(line + startLine,
        	"[^| ]([^|]*[^| ])?", &start, &end)) {
        	
            previousCmd = cmd;
            
            /* get current command */
            cmd = getExpression(line + startLine, start, end, 0);
            
            /* go to next search */
            startLine += end;

			/* file input and output of pipe */
            int file[2];
            pid_t pid;

            newPipe(file, &pid);

			/* parent */
			if(pid > 0) {
				readPipe(file);
			/* child */
			} else {
				writePipe(file);
				internalExternalPipe(previousCmd, NO_JOBS_CONTROL);
			}
        }

		/* execute last command */
        internalExternalPipe(cmd, NO_JOBS_CONTROL);
    }
}
コード例 #24
0
ファイル: syscall.c プロジェクト: jcaracciolo/Arqui2016
qword sys_exec(qword entry_point, qword pid, qword cargs, qword pargs, qword r9) {
    int * retPid = (int *) pid;
    *retPid = insertProcess((void *)entry_point, (int)cargs, (void **)pargs);
    return 0;
}