Example #1
0
int init_module(void)
{
    cbuffer = create_cbuffer_t(MAX_ITEMS_CBUF);

    if (!cbuffer) {
    return -ENOMEM;
  }

  

    sema_init(&sem_cons, 0);
    sema_init(&sem_prod, 0);
    sema_init(&mutex, 1);

    proc_entry = proc_create_data("fifoproc",0666, NULL, &proc_entry_fops, NULL);
    
      if (proc_entry == NULL) {
      destroy_cbuffer_t(cbuffer);
      printk(KERN_INFO "Fifoproc: No puedo crear la entrada en proc\n");
      return  -ENOMEM;
  }
      
  printk(KERN_INFO "Fifoproc: Cargado el Modulo.\n");

    return 0;
}
Example #2
0
int init_module(void)
{
	
	Major = register_chrdev(0, DEVICE_NAME, &fops);
	
	 if (Major < 0){	 
		printk(KERN_ALERT "Registering char device failed with %d\n", Major);         
		return Major;        
	}
 
	
	//Inicializamos semaforos de mutex y de colas de espera
	sema_init(&mtx,1);
	sema_init(&sem_cons,0);
	sema_init(&sem_prod,0);
	
	
	//Inicializamos cbuffer
	cbuffer = create_cbuffer_t (MAX_CBUFFER_LEN);
	

	 printk(KERN_INFO "I was assigned major number %d. To talk to\n", Major);        
	 printk(KERN_INFO "the driver, create a dev file with\n");
     printk(KERN_INFO "'mknod /dev/%s c %d 0'.\n", DEVICE_NAME, Major);        
     printk(KERN_INFO "Try various minor numbers. Try to cat and echo to\n");       
     printk(KERN_INFO "the device file.\n");        
     printk(KERN_INFO "Remove the device file and module when done.\n");
   	
  	return 0;
}
Example #3
0
/* FunciĆ³n init module */
int init_module( void )
{
    Major = register_chrdev(0, DEVICE_NAME, &fops);
    if (Major < 0) {
        printk(KERN_ALERT "Registering char fifo failed with %d\n", Major);
        return Major;
    }

    printk(KERN_ALERT "Registering char fifo succed with %d\n", Major);
    
    /* Inicializaciones */
    prodcount = 0;
    conscount = 0;
    sema_init(&mtx, 1);
    sema_init(&sem_cons, 0);
    sema_init(&sem_prod, 0);
    nr_prod_waiting = 0;
    nr_cons_waiting = 0;
    cbuffer = create_cbuffer_t(CBUF_SIZE);

    return SUCCESS;
}
Example #4
0
struct sys_mbox* mbox_new(unsigned int max_size) {
	struct sys_mbox *mailbox;

	mailbox = (struct sys_mbox *) malloc(sizeof(struct sys_mbox));

	if (mailbox == NULL ) {
		return NULL ;
	}

	/* Create the data structure */
	if ((mailbox->cbuffer = create_cbuffer_t(max_size)) == NULL ) {
		free(mailbox);
		return NULL ;
	}
	mailbox->not_empty = sys_sem_new(0);
	mailbox->not_full = sys_sem_new(0);
	mailbox->mutex = (pthread_mutex_t *) malloc(sizeof(pthread_mutex_t));
	pthread_mutex_init(mailbox->mutex, NULL );

	mailbox->wait_send = 0;
	return mailbox;
}