📄 ch3_progress_poll_elem.i
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#if !defined(MPIDI_CH3I_POLLFD_INC)#define MPIDI_CH3I_POLLFD_INC 64#endifstatic int poll_elem_alloc(int fd){ int elem; struct pollfd * fds; struct pollinfo * infos; /* MT - allcation of array element and array resizing not thread safe! */ for (elem = 0; elem < poll_sz; elem++) { if (poll_fds[elem].fd < 0) { poll_fds[elem].fd = fd; poll_fds[elem].events = 0; poll_fds[elem].revents = 0; if (elem + 1 > poll_num) { poll_num = elem + 1; } return elem; } } /* No more pollfd and pollinfo elements. Resize... */ fds = MPIU_Malloc((poll_sz + MPIDI_CH3I_POLLFD_INC) * sizeof(struct pollfd)); if (fds == NULL) { return -1; } infos = MPIU_Malloc((poll_sz + MPIDI_CH3I_POLLFD_INC) * sizeof(struct pollinfo)); if (infos == NULL) { MPIU_Free(fds); return -1; } /* Copy information from old arrays */ if (poll_sz > 0) { memcpy(fds, poll_fds, poll_sz * sizeof(struct pollfd)); memcpy(infos, poll_infos, poll_sz * sizeof(struct pollinfo)); } /* Register new file descriptor */ fds[poll_sz].fd = fd; fds[poll_sz].events = 0; fds[elem].revents = 0; /* Initialize new unallocated elements */ for (elem = poll_sz + 1; elem < poll_sz + MPIDI_CH3I_POLLFD_INC; elem++) { fds[elem].fd = -1; fds[elem].events = 0; fds[elem].revents = 0; } /* Free old arrays and set pointers to new arrays */ MPIU_Free(poll_fds); MPIU_Free(poll_infos); poll_fds = fds; poll_infos = infos; elem = poll_sz; poll_num = poll_sz + 1; poll_sz += MPIDI_CH3I_POLLFD_INC; return elem;}static void poll_elem_free(int elem){ poll_fds[elem].fd = -1; poll_fds[elem].events = 0; poll_fds[elem].revents = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -