Hola tengo el siguiente problema, tengo que implementar operaciones sobre semaforos en este caso crear_semaforo.
Tengo las siguientes estructuras qye me vienen dadas y crear semaforo tiene que hacer:
Crea el semàfor con el nombre y valor inicial indicados Devuelve un entero que representa (idSem) para acceder al semaforo. En caso de error devuelve un numero negativo
Tengo problemas a la hora de copiar el *nom al struct haber si me podeis ayudar
Cuando ejecuto me da error de excepcion de memoria y cuando comento la linea de strcpy no
Gracias
struct semaforo {
char nombre[MAX_NOM_SEM+1]; /* Nombre del sem. con sitio para */
int contador; /* valor del sem. */
int num_aperturas; /* cuantos lo usan: si 0 libre */
lista_BCPs lista_bloqueados_sem;/* procesos bloqueados en sem. */
};
typedef struct semaforo semaforo;
/*
* Semaforos del sistema
*/
struct {
int num_sem_ocupados; /* Cuantos existen? */
lista_BCPs lista_espera_libre; /* Bloqueados esperando libre */
semaforo tabla_semaforos[NUM_SEM]; /* La tabla de semaforos */
} info_semaforos;
int sis_crear_sem (char *nom, unsigned int val_ini){
int i;
int num_sem = info_semaforos.num_sem_ocupados;
for(i=0; i<num_sem; i++){
if(info_semaforos.tabla_semaforos[i].nombre==nom){
printk("ERROR, Ya existe un semaforo con ese nombre");
return -1;
}
}
strcpy(info_semaforos.
tabla_semaforos[num_sem
].
nombre,nom
); info_semaforos.tabla_semaforos[num_sem].contador = val_ini;
info_semaforos.num_sem_ocupados++;
return 0;
}