コード例 #1
0
ファイル: UtilTests.cs プロジェクト: samarunraj/expressos
 public void FixBVTest()
 {
     var bv = new FixedSizeBitVector(32);
     bv.Set(1);
     bv.Set(9);
     var b = bv.FindNextOne(-1);
     Assert.AreEqual<int>(1, b);
     b = bv.FindNextOne(b);
     Assert.AreEqual<int>(9, b);
     b = bv.FindNextOne(b);
     Assert.AreEqual<int>(-1, b);
 }
コード例 #2
0
        public void FixBVTest()
        {
            var bv = new FixedSizeBitVector(32);

            bv.Set(1);
            bv.Set(9);
            var b = bv.FindNextOne(-1);

            Assert.AreEqual <int>(1, b);
            b = bv.FindNextOne(b);
            Assert.AreEqual <int>(9, b);
            b = bv.FindNextOne(b);
            Assert.AreEqual <int>(-1, b);
        }
コード例 #3
0
ファイル: SelectHelper.cs プロジェクト: samarunraj/expressos
        internal int TranslateToUserFdlist(Thread current, ByteBufferRef buf, int poll_ret, int maxfds, UserPtr userPtr, short event_type)
        {
            Contract.Requires(poll_ret * pollfd.Size < buf.Length);

            if (userPtr == UserPtr.Zero)
                return 0;

            var res = 0;
            var len = (maxfds + 7) / 8;
            var vec = new FixedSizeBitVector(maxfds);

            for (int i = 0; i < poll_ret; i++)
            {
                var poll_struct = pollfd.Deserialize(buf, i * pollfd.Size);
                var linux_fd = poll_struct.fd;
                var node = Lookup(linux_fd);
                if (node == null)
                    return -ErrorCode.EBADF;

                if ((poll_struct.revents & event_type & node.event_type) != 0)
                {
                    vec.Set(node.expressos_fd);
                    ++res;
                }
            }

            if (userPtr.Write(current, vec.Buffer) != 0)
                return -ErrorCode.EFAULT;

            return res;
        }