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; }
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; }