コード例 #1
0
ファイル: select.c プロジェクト: BhargavKola/xenomai-forge
static unsigned fd_set_popcount(fd_set *set, unsigned n)
{
	unsigned count = 0, i;

	for (i = 0; i < __FDELT(n); i++)
		if (set->fds_bits[i])
			count += hweight_long(set->fds_bits[i]);

	if (i < __FDSET_LONGS && (set->fds_bits[i] & (__FDMASK(n) - 1)))
		count += hweight_long(set->fds_bits[i] & (__FDMASK(n) - 1));

	return count;
}
コード例 #2
0
ファイル: select.c プロジェクト: BhargavKola/xenomai-forge
static void fd_set_zerofill(fd_set *set, unsigned n)
{
	unsigned i;

	i = __FDELT(n);

	if (i < __FDSET_LONGS)
		set->fds_bits[i] &= (__FDMASK(n) - 1);

	for(i++; i < __FDSET_LONGS; i++)
		set->fds_bits[i] = 0;
}
コード例 #3
0
ファイル: select.c プロジェクト: BhargavKola/xenomai-forge
static unsigned
fd_set_and(fd_set *result, fd_set *first, fd_set *second, unsigned n)
{
	unsigned i, not_empty = 0;

	for (i = 0; i < __FDELT(n); i++)
		if((result->fds_bits[i] =
		    first->fds_bits[i] & second->fds_bits[i]))
			not_empty = 1;

	if (i < __FDSET_LONGS
	    && (result->fds_bits[i] =
		first->fds_bits[i] & second->fds_bits[i] & (__FDMASK(n) - 1)))
		not_empty = 1;

	return not_empty;
}
コード例 #4
0
ファイル: selector.c プロジェクト: anandsoft/odatalite
int SelectorAddHandler(
    Selector* self,
    Handler* handler)
{
    if (self->nhandlers == MAX_HANDLERS)
        return -1;

#if defined(CHECK_DUPLICATE_ADDS)
    if (_FindHandler(self, handler) != (size_t)-1)
        return -1;
#endif


#if defined(USE_FDSET_INTERNALS)
    handler->__fdelt = __FDELT(handler->sock);
    handler->__fdmask = __FDMASK(handler->sock);
#endif

    self->handlers[self->nhandlers++] = handler;

    DEBUG_ASSERT(_FindHandler(self, handler) != (size_t)-1);

    return 0;
}