示例#1
0
int
write ( int file,
        char *buf,
        int nbytes)
{
  return sysCall(SYS_write, file, (unsigned long)buf, nbytes);
}
示例#2
0
int
read (int file,
      char *buf,
      int nbytes)
{
  return sysCall(SYS_read, file, (unsigned long)buf, nbytes);
}
示例#3
0
unsigned char
inbyte (void)
{
  char c;
  sysCall(SYS_read, 0, (unsigned long)&c, 1);
  return c;
}
示例#4
0
文件: dog.c 项目: haggl/midiSwitcher
void initDOG( void )
{
	// init sequence (-> data sheet)
	_delay_ms( 50 );
	PORT_RW &=~ (1<<DOG_RW); // write mode
	sysCall( 0x39 ); // 8-bit mode, 2 lines, IS[01]
	sysCall( 0x1c ); // bias 1/4
	sysCall( 0x69 ); // follower control
	sysCall( 0x52 ); // booster off, contrast [6:5] = [10]
	sysCall( 0x74 ); // contrast [4:0] = [0100]
	sysCall( 0x06 ); // entry mode
	sysCall( 0x38 ); // switch to IS[00]
	sysCall( 0x01 ); // clear display, cursor -> home
	sysCall( 0x0c ); // turn display on
}
示例#5
0
文件: dog.c 项目: haggl/midiSwitcher
void blinkCursor( void )
{
	sysCall( 0x0d );
}
示例#6
0
文件: dog.c 项目: haggl/midiSwitcher
void moveTo( uint8_t pos )
{
	sysCall( pos | 0x80 );
}
示例#7
0
文件: dog.c 项目: haggl/midiSwitcher
void home_lf( void )
{
	sysCall( 0xc0 );
}
示例#8
0
void trataInterrupcao(int flag){

	switch(flag){

		case 0 :
			printf("Chamando sysCall ...\n");
			printf("Nome do arquivo:\n");
			scanf("%s", nomeArquivo);
			sysCall(nomeArquivo);
			break;

		case 1 :
			printf("Processo interronpido ..\n");
			pthread_create(&procI, &procI_ATTR,(void*) &processInterrupt, NULL);
			pthread_join(procI, NULL);
			break;

		case 2 :
			printf("Criando processo ...\n");
			pthread_create(&procC, &procC_ATTR, (void*) &processCreate, NULL);
			pthread_join(procC, NULL);
			break;

		case 3 :
			printf("Processo finalizado ...\n");
			pthread_create(&procF, &procF_ATTR, (void*) &processFinish, NULL);
			pthread_join(procF, NULL);
			break;

		case 4 :
			printf("Realizando E/S ...\n");
			pthread_create(&ioR, &ioR_ATTR, (void*) &ioRequest, NULL);
			pthread_join(ioR, NULL);
			break;

		case 5 :
			printf("Finalizando E/S...\n");
			pthread_create(&ioF, &ioF_ATTR, (void*) &ioFinish, NULL);
			pthread_join(ioF, NULL);
			break;

		case 6 :
			printf("Carregando na memoria ... \n");
			pthread_create(&memR, &memR_ATTR, (void*) &memLoadReq, NULL);
			pthread_join(memR, NULL);
			break;

		case 7 :
			printf("Fim de carregamento ... \n");
			pthread_create(&memF, &memF_ATTR, (void*) &memLoadFinish, NULL);
			pthread_join(memF, NULL);
			break;

		case 8 :
			printf("Operação no sistema de arquivos ...\n");
			pthread_create(&fsR, &fsR_ATTR,(void*) &fsRequest, NULL);
			pthread_join(fsR,NULL);
			break;

		case 9 :
			printf("Final de operação no sistema de arquivos ...\n");
			pthread_create(&fsF, &fsF_ATTR,(void*) &fsFinish, NULL);
			pthread_join(fsF,NULL);
			break;

		case 10:
			printf("Bloqueio de processo ...\n");
			pthread_create(&semP, &semP_ATTR,(void*) &semaphoreP, NULL);
			pthread_join(semP,NULL);
			break;

		case 11:
			printf(" Desbloqueio de processo ...\n");
			pthread_create(&semV, &semV_ATTR,(void*) &semaphoreV, NULL);
			pthread_join(semV,NULL);
			break;
	}//fim switch
}
示例#9
0
文件: dog.c 项目: haggl/midiSwitcher
void hideCursor()
{
	sysCall( 0x0c );
}
示例#10
0
文件: dog.c 项目: haggl/midiSwitcher
void clear( void )
{
	sysCall( 0x01 );
}
示例#11
0
文件: dog.c 项目: haggl/midiSwitcher
void showCursor()
{
	sysCall( 0x0e );
}
示例#12
0
文件: dog.c 项目: haggl/midiSwitcher
void shiftRight( void )
{
	sysCall( 0x1c );
}
示例#13
0
文件: dog.c 项目: haggl/midiSwitcher
void shiftLeft( void )
{
	sysCall( 0x18 );
}
示例#14
0
文件: arch.c 项目: charliexp/picoos
void SWI_Handler()
{
  sysCall((unsigned int*)posCurrentTask_g->stackptr);
}
示例#15
0
int
outbyte (unsigned char c)
{
  return sysCall(SYS_write, 0, (unsigned long)&c, 1);
}
示例#16
0
文件: dog.c 项目: haggl/midiSwitcher
void home( void )
{
	sysCall( 0x02 );
}
示例#17
0
void sysCall(char* arquivo){

	FILE* arq;
	char url[100], info[100], valor[10];

	int num=0, i=0, tempoExec=0, id, pri, tam, converte;
	char nome[10], listaSem[10];

	if(arq == NULL){
		printf("Erro ao abrir o arquivo\n");
	}else{
		printf("Leitura do arquivo ... \n \n");
		strcpy(url,arquivo);
		printf("%s \n",url);
		//Abertura do arquivo para leitura
		arq = fopen(url, "r");
		printf("Executando a leitura ... \n");
	}

	//Leitura do cabeçalho do arquivo sintético
	printf("Executando leitura de cabecalho ...\n");
			while( (fgets(info, sizeof(info), arq) != NULL)){
				if(i == 0) {
					strcpy(nome,info);
					printf("%s \n",nome);
				}
				if(i == 1){
					id = atoi(info);
					Dados.PID = id;
					printf("%d \n",Dados.PID);
				}
				if(i==2){
					pri = atoi(info);
					Dados.Prioridade = pri;
					printf("%d \n",Dados.Prioridade);
				}
				if(i==3){
					tam = atoi(info);
					printf("%d \n",tam);
				}
				if(i==4){
					strcpy(listaSem,info);
					printf("%s \n",listaSem);
				}
				if(i==5) break;
				i++;

			}
			trataInterrupcao(2);

			//lê o arquivo até o final e exibe na tela
			printf("Executando leitura de instrucoes\n\n");
			while( (fgets(info, sizeof(info), arq) != NULL)){
			if(info[0]== 'e' && info[1]== 'x'){
				i=5;
				while(info[i] != '\0'){
					valor[num]=info[i];
					i++;
					num++;
				}
				valor[num] = '\0';
				converte = atoi(valor);
				printf("Executar por %d ut \n",converte);
				tempoExec = tempoExec+converte;

				num=0;
				i=0;

			}else{
				if(info[0] == 'r' && info[1] == 'e'){

					i=5;
					while(info[i] != '\0'){
						valor[num]=info[i];
						i++;
						num++;
					}
					valor[num] = '\0';
					converte = atoi(valor);
					printf("Ler o disco na trilha %d \n",converte);

					num=0;
					i=0;
				}else{
					if(info[0]=='w' && info[1]=='r'){

					i=6;
					while(info[i] != '\0'){
						valor[num]=info[i];
						i++;
						num++;
					}
					valor[num] = '\0';
					converte = atoi(valor);
					printf("Escrever na trilha %d \n",converte);

					num=0;
					i=0;
					}else {
						if(info[0]=='P' && info[1]=='('){
						sem = info[2];
						printf("\n");
						printf("Bloquear Semaforo %c \n",sem);
						trataInterrupcao(10);
						}else{
							if(info[0]=='V' && info[1]=='('){
							sem = info[2];

							printf("Liberar Semaforo %c \n",sem);
							trataInterrupcao(11);
							}else{
								if(info[0]=='p' && info[1]=='r'){

									i=6;
									while(info[i] != '\0'){
										valor[num]=info[i];
										i++;
										num++;
									}
								valor[num] = '\0';
								converte = atoi(valor);
								printf("Imprime por %d ut \n",converte);

								num=0;
								i=0;
								}else{
									if(info[0]=='c' && info[1]=='a'){

										i=6;
										while(info[i] != ')'){
											valor[num]=info[i];
											i++;
											num++;
										}
										valor[num] = '\0';

										printf("Chama processo: %s \n",valor);


										sysCall(valor);

										num=0;
										i=0;
									}
								}
							}
						}
					}
				}
			}

			}//finaliza leitura das linhas


			fclose(arq);
			pthread_create(&escalonador, &escalonador_ATTR,(void*) &escalonar,(void*)(unsigned long long) tempoExec);
			pthread_join(escalonador,NULL);
			trataInterrupcao(0);
}