#include "shm.h"

void delshm(int id)
{
        if ((shmctl(id,IPC_RMID,NULL)) ==  -1)
                printf("\nErrore nella rimozione della memoria sherata\n");
}

int creashm(int key,int dim)
{
        int id;

        if ((id = shmget(key,dim,IPC_CREAT | PERMESSI)) != -1)
                {
                //printf("\n Shared memory ID :: %d \n",id);
                return(id);
                }
        else
                {
                printf("\nErrore nella creazione della shared memory\n");
                return(-1);
                }


}

void * attachshm(int id)
{
        char * sh;

        if ((sh = shmat(id,NULL,PERMESSI)) != NULL) return((void *)sh);
        else
                {
                printf("\nErrore nell'attacco alla shared memory\n");
                return((void *)-1);
                }
}

void deattachshm(void * id)
{
        if ((shmdt((char *)id)) == -1) printf("\Errore di distacco dalla shared memory\n");
}