📄 gmlnd_utils.c
字号:
int nrx_small = *gmnal_tunables.gm_nrx_small; int nrx_large = *gmnal_tunables.gm_nrx_large; int nrx = nrx_large + nrx_small; int rc; int i; CDEBUG(D_NET, "nrxcred: %d(%dL+%dS)\n", nrxcred, nrx_large, nrx_small); if (nrx > nrxcred) { int nlarge = (nrx_large * nrxcred)/nrx; int nsmall = nrxcred - nlarge; CWARN("Only %d rx credits: " "reducing large %d->%d, small %d->%d\n", nrxcred, nrx_large, nlarge, nrx_small, nsmall); *gmnal_tunables.gm_nrx_large = nrx_large = nlarge; *gmnal_tunables.gm_nrx_small = nrx_small = nsmall; nrx = nlarge + nsmall; } gmni->gmni_rx_hash = gm_create_hash(gm_hash_compare_ptrs, gm_hash_hash_ptr, 0, 0, nrx, 0); if (gmni->gmni_rx_hash == NULL) { CERROR("Failed to create hash table\n"); return -ENOMEM; } for (i = 0; i < nrx; i++ ) { rc = gmnal_alloc_rx(gmni, i < nrx_large); if (rc != 0) return rc; } return 0;}char * gmnal_gmstatus2str(gm_status_t status){ return(gm_strerror(status)); switch(status) { case(GM_SUCCESS): return("SUCCESS"); case(GM_FAILURE): return("FAILURE"); case(GM_INPUT_BUFFER_TOO_SMALL): return("INPUT_BUFFER_TOO_SMALL"); case(GM_OUTPUT_BUFFER_TOO_SMALL): return("OUTPUT_BUFFER_TOO_SMALL"); case(GM_TRY_AGAIN ): return("TRY_AGAIN"); case(GM_BUSY): return("BUSY"); case(GM_MEMORY_FAULT): return("MEMORY_FAULT"); case(GM_INTERRUPTED): return("INTERRUPTED"); case(GM_INVALID_PARAMETER): return("INVALID_PARAMETER"); case(GM_OUT_OF_MEMORY): return("OUT_OF_MEMORY"); case(GM_INVALID_COMMAND): return("INVALID_COMMAND"); case(GM_PERMISSION_DENIED): return("PERMISSION_DENIED"); case(GM_INTERNAL_ERROR): return("INTERNAL_ERROR"); case(GM_UNATTACHED): return("UNATTACHED"); case(GM_UNSUPPORTED_DEVICE): return("UNSUPPORTED_DEVICE"); case(GM_SEND_TIMED_OUT): return("GM_SEND_TIMEDOUT"); case(GM_SEND_REJECTED): return("GM_SEND_REJECTED"); case(GM_SEND_TARGET_PORT_CLOSED): return("GM_SEND_TARGET_PORT_CLOSED"); case(GM_SEND_TARGET_NODE_UNREACHABLE): return("GM_SEND_TARGET_NODE_UNREACHABLE"); case(GM_SEND_DROPPED): return("GM_SEND_DROPPED"); case(GM_SEND_PORT_CLOSED): return("GM_SEND_PORT_CLOSED"); case(GM_NODE_ID_NOT_YET_SET): return("GM_NODE_ID_NOT_YET_SET"); case(GM_STILL_SHUTTING_DOWN): return("GM_STILL_SHUTTING_DOWN"); case(GM_CLONE_BUSY): return("GM_CLONE_BUSY"); case(GM_NO_SUCH_DEVICE): return("GM_NO_SUCH_DEVICE"); case(GM_ABORTED): return("GM_ABORTED"); case(GM_INCOMPATIBLE_LIB_AND_DRIVER): return("GM_INCOMPATIBLE_LIB_AND_DRIVER"); case(GM_UNTRANSLATED_SYSTEM_ERROR): return("GM_UNTRANSLATED_SYSTEM_ERROR"); case(GM_ACCESS_DENIED): return("GM_ACCESS_DENIED"); /* * These ones are in the docs but aren't in the header file case(GM_DEV_NOT_FOUND): return("GM_DEV_NOT_FOUND"); case(GM_INVALID_PORT_NUMBER): return("GM_INVALID_PORT_NUMBER"); case(GM_UC_ERROR): return("GM_US_ERROR"); case(GM_PAGE_TABLE_FULL): return("GM_PAGE_TABLE_FULL"); case(GM_MINOR_OVERFLOW): return("GM_MINOR_OVERFLOW"); case(GM_SEND_ORPHANED): return("GM_SEND_ORPHANED"); case(GM_HARDWARE_FAULT): return("GM_HARDWARE_FAULT"); case(GM_DATA_CORRUPTED): return("GM_DATA_CORRUPTED"); case(GM_TIMED_OUT): return("GM_TIMED_OUT"); case(GM_USER_ERROR): return("GM_USER_ERROR"); case(GM_NO_MATCH): return("GM_NOMATCH"); case(GM_NOT_SUPPORTED_IN_KERNEL): return("GM_NOT_SUPPORTED_IN_KERNEL"); case(GM_NOT_SUPPORTED_ON_ARCH): return("GM_NOT_SUPPORTED_ON_ARCH"); case(GM_PTE_REF_CNT_OVERFLOW): return("GM_PTR_REF_CNT_OVERFLOW"); case(GM_NO_DRIVER_SUPPORT): return("GM_NO_DRIVER_SUPPORT"); case(GM_FIRMWARE_NOT_RUNNING): return("GM_FIRMWARE_NOT_RUNNING"); * These ones are in the docs but aren't in the header file */ default: return("UNKNOWN GM ERROR CODE"); }}char *gmnal_rxevent2str(gm_recv_event_t *ev){ short event; event = GM_RECV_EVENT_TYPE(ev); switch(event) { case(GM_NO_RECV_EVENT): return("GM_NO_RECV_EVENT"); case(GM_SENDS_FAILED_EVENT): return("GM_SEND_FAILED_EVENT"); case(GM_ALARM_EVENT): return("GM_ALARM_EVENT"); case(GM_SENT_EVENT): return("GM_SENT_EVENT"); case(_GM_SLEEP_EVENT): return("_GM_SLEEP_EVENT"); case(GM_RAW_RECV_EVENT): return("GM_RAW_RECV_EVENT"); case(GM_BAD_SEND_DETECTED_EVENT): return("GM_BAD_SEND_DETECTED_EVENT"); case(GM_SEND_TOKEN_VIOLATION_EVENT): return("GM_SEND_TOKEN_VIOLATION_EVENT"); case(GM_RECV_TOKEN_VIOLATION_EVENT): return("GM_RECV_TOKEN_VIOLATION_EVENT"); case(GM_BAD_RECV_TOKEN_EVENT): return("GM_BAD_RECV_TOKEN_EVENT"); case(GM_ALARM_VIOLATION_EVENT): return("GM_ALARM_VIOLATION_EVENT"); case(GM_RECV_EVENT): return("GM_RECV_EVENT"); case(GM_HIGH_RECV_EVENT): return("GM_HIGH_RECV_EVENT"); case(GM_PEER_RECV_EVENT): return("GM_PEER_RECV_EVENT"); case(GM_HIGH_PEER_RECV_EVENT): return("GM_HIGH_PEER_RECV_EVENT"); case(GM_FAST_RECV_EVENT): return("GM_FAST_RECV_EVENT"); case(GM_FAST_HIGH_RECV_EVENT): return("GM_FAST_HIGH_RECV_EVENT"); case(GM_FAST_PEER_RECV_EVENT): return("GM_FAST_PEER_RECV_EVENT"); case(GM_FAST_HIGH_PEER_RECV_EVENT): return("GM_FAST_HIGH_PEER_RECV_EVENT"); case(GM_REJECTED_SEND_EVENT): return("GM_REJECTED_SEND_EVENT"); case(GM_ORPHANED_SEND_EVENT): return("GM_ORPHANED_SEND_EVENT"); case(GM_BAD_RESEND_DETECTED_EVENT): return("GM_BAD_RESEND_DETETED_EVENT"); case(GM_DROPPED_SEND_EVENT): return("GM_DROPPED_SEND_EVENT"); case(GM_BAD_SEND_VMA_EVENT): return("GM_BAD_SEND_VMA_EVENT"); case(GM_BAD_RECV_VMA_EVENT): return("GM_BAD_RECV_VMA_EVENT"); case(_GM_FLUSHED_ALARM_EVENT): return("GM_FLUSHED_ALARM_EVENT"); case(GM_SENT_TOKENS_EVENT): return("GM_SENT_TOKENS_EVENTS"); case(GM_IGNORE_RECV_EVENT): return("GM_IGNORE_RECV_EVENT"); case(GM_ETHERNET_RECV_EVENT): return("GM_ETHERNET_RECV_EVENT"); case(GM_NEW_NO_RECV_EVENT): return("GM_NEW_NO_RECV_EVENT"); case(GM_NEW_SENDS_FAILED_EVENT): return("GM_NEW_SENDS_FAILED_EVENT"); case(GM_NEW_ALARM_EVENT): return("GM_NEW_ALARM_EVENT"); case(GM_NEW_SENT_EVENT): return("GM_NEW_SENT_EVENT"); case(_GM_NEW_SLEEP_EVENT): return("GM_NEW_SLEEP_EVENT"); case(GM_NEW_RAW_RECV_EVENT): return("GM_NEW_RAW_RECV_EVENT"); case(GM_NEW_BAD_SEND_DETECTED_EVENT): return("GM_NEW_BAD_SEND_DETECTED_EVENT"); case(GM_NEW_SEND_TOKEN_VIOLATION_EVENT): return("GM_NEW_SEND_TOKEN_VIOLATION_EVENT"); case(GM_NEW_RECV_TOKEN_VIOLATION_EVENT): return("GM_NEW_RECV_TOKEN_VIOLATION_EVENT"); case(GM_NEW_BAD_RECV_TOKEN_EVENT): return("GM_NEW_BAD_RECV_TOKEN_EVENT"); case(GM_NEW_ALARM_VIOLATION_EVENT): return("GM_NEW_ALARM_VIOLATION_EVENT"); case(GM_NEW_RECV_EVENT): return("GM_NEW_RECV_EVENT"); case(GM_NEW_HIGH_RECV_EVENT): return("GM_NEW_HIGH_RECV_EVENT"); case(GM_NEW_PEER_RECV_EVENT): return("GM_NEW_PEER_RECV_EVENT"); case(GM_NEW_HIGH_PEER_RECV_EVENT): return("GM_NEW_HIGH_PEER_RECV_EVENT"); case(GM_NEW_FAST_RECV_EVENT): return("GM_NEW_FAST_RECV_EVENT"); case(GM_NEW_FAST_HIGH_RECV_EVENT): return("GM_NEW_FAST_HIGH_RECV_EVENT"); case(GM_NEW_FAST_PEER_RECV_EVENT): return("GM_NEW_FAST_PEER_RECV_EVENT"); case(GM_NEW_FAST_HIGH_PEER_RECV_EVENT): return("GM_NEW_FAST_HIGH_PEER_RECV_EVENT"); case(GM_NEW_REJECTED_SEND_EVENT): return("GM_NEW_REJECTED_SEND_EVENT"); case(GM_NEW_ORPHANED_SEND_EVENT): return("GM_NEW_ORPHANED_SEND_EVENT"); case(_GM_NEW_PUT_NOTIFICATION_EVENT): return("_GM_NEW_PUT_NOTIFICATION_EVENT"); case(GM_NEW_FREE_SEND_TOKEN_EVENT): return("GM_NEW_FREE_SEND_TOKEN_EVENT"); case(GM_NEW_FREE_HIGH_SEND_TOKEN_EVENT): return("GM_NEW_FREE_HIGH_SEND_TOKEN_EVENT"); case(GM_NEW_BAD_RESEND_DETECTED_EVENT): return("GM_NEW_BAD_RESEND_DETECTED_EVENT"); case(GM_NEW_DROPPED_SEND_EVENT): return("GM_NEW_DROPPED_SEND_EVENT"); case(GM_NEW_BAD_SEND_VMA_EVENT): return("GM_NEW_BAD_SEND_VMA_EVENT"); case(GM_NEW_BAD_RECV_VMA_EVENT): return("GM_NEW_BAD_RECV_VMA_EVENT"); case(_GM_NEW_FLUSHED_ALARM_EVENT): return("GM_NEW_FLUSHED_ALARM_EVENT"); case(GM_NEW_SENT_TOKENS_EVENT): return("GM_NEW_SENT_TOKENS_EVENT"); case(GM_NEW_IGNORE_RECV_EVENT): return("GM_NEW_IGNORE_RECV_EVENT"); case(GM_NEW_ETHERNET_RECV_EVENT): return("GM_NEW_ETHERNET_RECV_EVENT"); default: return("Unknown Recv event"); /* _GM_PUT_NOTIFICATION_EVENT */ /* GM_FREE_SEND_TOKEN_EVENT */ /* GM_FREE_HIGH_SEND_TOKEN_EVENT */ }}voidgmnal_yield(int delay){ set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(delay);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -