Esempio n. 1
0
int consdrv_main(int argc, char *argv[]) {
  int size, index;
  sys_thread_id_t id;
  char *p;

  consdrv_init();
  sys_setintr(SOFTVEC_TYPE_SERINTR, consdrv_intr);

  while(1) {
    id = sys_recv(MLBOX_ID_CONSOUTPUT, &size, &p);
    index = p[0] - '0';
    consdrv_command(&consreg[index], id, index, size-1, p+1);
    sys_memfree(p);
  }

  return 0;
}
Esempio n. 2
0
void btk_mem_free(
    void * kmem_p, 
    size_t size
    )
{
    FUNCTION("btk_mem_free");
    LOG_UNKNOWN_UNIT;
    FENTRY;

    TRC_MSG((BT_TRC_ALLOC | BT_TRC_DETAIL), 
            (LOG_FMT "ptr: " PTR_FMT "  size %d.\n",
            LOG_ARG, kmem_p, (int) size));


#if     defined (_AIX)
    {
        int     retvalue;

        retvalue = (int) xmfree(kmem_p, pinned_heap);
        if (o != retvalue) {
            INFO_MSG((LOG_FMT "Error %d from xmfree().\n"));
        }
    }

#elif   defined(__hpux)

    sys_memfree(kmem_p, size);

#elif   defined(__sun)

    kmem_free( kmem_p, size ); /* returns default value of retvalue */

#elif   defined(__sgi)

    kmem_free(kmem_p, size);

#elif   defined(__vxworks)

    free(kmem_p);

#elif   defined(_NTDDK_)

    ExFreePool(kmem_p);

#elif   defined(BT_uCOS)

    free(kmem_p);

#elif	defined(__linux__)

    kfree(kmem_p);

#endif  /* _AIX, __hpux, __sun, __sgi, __vxworks, _NTDDK_ */


    btk_mutex_enter(&kmem_mutex);

    btk_alloc_total_g -= size;    /* running total of kmem */
    if (btk_alloc_total_g < 0) {
        FATAL_STR("Allocated kernel memory went negative.\n");
    }

    TRC_MSG((BT_TRC_ALLOC), 
            (LOG_FMT "ptr " PTR_FMT "; size %d; total %d.\n",
            LOG_ARG, kmem_p, (int) size, btk_alloc_total_g));

    btk_mutex_exit(&kmem_mutex);

    FEXIT(0);
    return;
}