ssize_t dc_write(int fd,const void *buff, size_t buflen) { ssize_t n; struct vsp_node *node; #ifdef DC_CALL_TRACE showTraceBack(); #endif /* nothing wrong ... yet */ dc_errno = DEOK; node = get_vsp_node(fd); if (node == NULL) { /* we have not such file descriptor, so lets give a try to system */ return system_write(fd, buff, buflen); } n = dc_real_write(node, buff, buflen); m_unlock(&node->mux); return n; }
/* * merge_memory() * trigger ksm memory merging, Linux only */ static inline void merge_memory(void) { #if defined(__linux__) int ret; ret = system_write("/proc/sys/mm/ksm/run", KSM_RUN_MERGE, 1); (void)ret; #endif }
/* * compact_memory() * trigger memory compaction, Linux only */ static inline void compact_memory(void) { #if defined(__linux__) int ret; ret = system_write("/proc/sys/vm/compact_memory", "1", 1); (void)ret; #endif }
/* Flush check buffer */ static void check_flush(void) { if ( gdata->check_fd < 0 ) { return; } if (gdata->check_buffer_index) { system_write(gdata->check_fd, gdata->check_buffer, gdata->check_buffer_index); gdata->check_buffer_index = 0; } }
/* Move arbitrary byte stream into gdata->check_fd */ static void check_raw(void *buf, int len) { if ( gdata->check_fd < 0 ) { return; } if ( len <= 0 ) { return; } if (gdata->check_buffer_index + len > gdata->check_buffer_size) { check_flush(); if (len > gdata->check_buffer_size) { system_write(gdata->check_fd, buf, len); return; } } (void)memcpy(gdata->check_buffer + gdata->check_buffer_index, buf, len); gdata->check_buffer_index += len; }
int writen(int fd, const char *buf, int bufsize, ioTunnel *en) { int nleft, nwritten; nleft = bufsize; while (nleft > 0) { #ifdef WIN32 nwritten = send(fd, buf, nleft, 0); #else nwritten = en == NULL ? system_write(fd, buf, nleft) : en->eWrite(fd, buf, nleft); #endif /* WIN32 */ if (nwritten <= 0) return (nwritten); nleft -= nwritten; buf += nwritten; } return (bufsize - nleft); }
ssize_t intercept_write(gint fd, const gpointer buf, gint n) { return system_write(fd, buf, n); }