/* int crearTarea(char *programa){ */
int crearTarea(char *programa, int prioridad)
{ 
	void * imagen, *pc_inicial;
	int error=0;
	int numProceso;
	TipoBCP *proceso;

	numProceso=buscarBCPLibreTablaProcesos();
	if (numProceso==-1) {
		return -1;	/* no hay entrada libre */
	}
	/* A rellenar el BCP ... */
	proceso=&(tablaProcesos[numProceso]);

	/* crea la imagen de memoria leyendo ejecutable */
	imagen=crear_imagen(programa, &pc_inicial);
	if (imagen)	{
		/* asignar imagen de memoria */
		proceso->infoMemoria=imagen;
		proceso->pila=crear_pila(TAM_PILA);
		/* crear estado inicial de los registros del procesador */ 
		fijar_contexto_ini(proceso->infoMemoria, proceso->pila, TAM_PILA,
						   pc_inicial, &(proceso->contextoRegs));
		/*copiar tabla de descriptores de ficheros del padre */ 
		inicializarTablaDescFicheros(proceso->tablaDescFicheros);
		if (NULL != procesoActual) {
			memcpy(proceso->tablaDescFicheros, procesoActual->tablaDescFicheros,
				    MAX_TABLA_DESCFICHEROS * sizeof(TipoDescFichero) );
		}
		/* asignar el identificador de proceso */
		proceso->id=numProceso;
		/* asignar el estado inicial a LISTO */
		proceso->estado=LISTO;

		/* asignar la prioridad */
		proceso->prioridad=prioridad;

		/* lo inserta al final de la lista corresponiente */
		insertarConPrioridad(proceso);
		error= 0;
	} else {
		error= -1; /* fallo al crear imagen */
	}
	return error;
}
void imageProcessing(char* imageName, int contador) {
    int i, j; //Variables auxiliares para loops
    BMP img; //Estructura de tipo imágen
    unsigned char pixel; //Pixel

    char IMAGEN[45];
    char IMAGEN_TRATADA[45];
    strcpy(IMAGEN, imageName);
    sprintf(IMAGEN_TRATADA, "imTratada_%d.bmp", contador);
    //*****************************************************************************************************************
    //Abrir la imágen BMP de 24 bits, almacenar su cabecera en img y colocar sus pixeles en el arreglo img.pixel[][]
    //*****************************************************************************************************************
    abrir_imagen(&img, IMAGEN);
    printf("\n*************************************************************************");
    printf("\nIMAGEN: %s", IMAGEN);
    printf("\n*************************************************************************");
    printf("\nDimensiones de la imágen:\tAlto=%d\tAncho=%d\n", img.alto, img.ancho);
    //***********************************************************************************
    //Tratamiento de los pixeles
    //***********************************************************************************
    //Ejemplo donde se entercambia el plano Rojo con el Azul de la mitad de la imagen
    for (i = 0; i < img.alto; i++)
        for (j = 0; j < img.ancho; j++) {
            pixel = img.pixelR[i][j];
            img.pixelR[i][j] = img.pixelB[i][j];
            img.pixelB[i][j] = img.pixelG[i][j];
            img.pixelG[i][j] = pixel;
        }

    //*****************************************************************
    //1 Crear la imágen BMP a partir del arreglo img.pixel[][]
    //*****************************************************************
    crear_imagen(&img, IMAGEN_TRATADA);
    printf("\nImágen BMP tratada en el archivo: %s\n", IMAGEN_TRATADA);

    //Terminar programa normalmente	
}