Lines Matching +full:assigned +full:- +full:resolution +full:- +full:bits
76 file is a user-settable packet filter.
117 .Ss Zero-copy buffer mode
123 Buffers are of fixed (and equal) size, page-aligned, and an even multiple of
125 The maximum zero-copy buffer size is returned by the
136 .Bd -literal
152 Each buffer begins with a fixed-length header to hold synchronization and
154 .Bd -literal
184 The kernel signals that a buffer has been assigned to userspace by modifying
192 In order to avoid caching and memory re-ordering effects, the user process
195 .Bd -literal
205 atomic_store_rel_int(&bzh->bzh_user_gen, bzh->bzh_kernel_gen);
209 * Check whether a buffer has been assigned to userspace by the kernel.
216 return (bzh->bzh_user_gen !=
217 atomic_load_acq_int(&bzh->bzh_kernel_gen));
228 buffer will not be assigned to userspace if no data was present.
237 is assigned to user space.
241 the invariant that at most one buffer could be assigned to the user process
254 .Bd -literal
278 .Bl -tag -width BIOCGETBUFMODE
310 .Bd -literal -offset indent
347 a listener that opened its interface non-promiscuously may receive
389 .Bd -literal
397 .Bl -hang -offset indent
427 .Bd -literal
474 .Bd -literal
544 Set or get format and resolution of the time stamps returned by BPF.
551 to get time stamps in 64-bit
560 to get time stamps in 64-bit
569 to get time stamps in 64-bit
575 All 64-bit time stamp formats are wrapped in
625 zero-copy buffer mode.
628 Set the current zero-copy buffer locations; buffer locations may be
629 set only once zero-copy buffer mode has been selected, and prior to attaching
631 Buffers must be of identical size, page-aligned, and an integer multiple of
642 Get the largest individual zero-copy buffer size allowed.
643 As two buffers are used in zero-copy buffer mode, the limit (in practice) is
645 As zero-copy buffers consume kernel address space, conservative selection of
648 descriptors in use on 32-bit systems.
650 Force ownership of the next buffer to be assigned to userspace, if any data
653 This allows consumers of zero-copy buffering to implement timeouts and
656 therefore ownership is not assigned, the user process must check
661 Set the VLAN PCP bits to the supplied value.
667 which allow the user to do async and/or non-blocking I/O to an open
670 .Bl -tag -width SIOCGIFADDR
679 Sets or clears non-blocking I/O.
680 If arg is non-zero, then doing a
682 when no data is available will return -1 and
686 If arg is zero, non-blocking I/O is disabled.
692 When enabled (arg is non-zero), the process or process group specified by
717 or via a zero-copy buffer:
718 .Bd -literal
738 .Bl -tag -compact -width bh_datalen
752 .\" XXX - not really a function call
811 .Dl p = (char *)p + BPF_WORDALIGN(p->bh_hdrlen + p->bh_caplen)
826 Each instruction performs some action on the pseudo-machine state,
831 .Bd -literal
849 The opcodes are encoded in a semi-hierarchical fashion.
861 operator bits are or'd into the class to give the actual instructions.
879 - 1.
888 .Bl -tag -width BPF_STXx
916 .Bd -literal
917 BPF_LD+BPF_W+BPF_ABS A <- P[k:4]
918 BPF_LD+BPF_H+BPF_ABS A <- P[k:2]
919 BPF_LD+BPF_B+BPF_ABS A <- P[k:1]
920 BPF_LD+BPF_W+BPF_IND A <- P[X+k:4]
921 BPF_LD+BPF_H+BPF_IND A <- P[X+k:2]
922 BPF_LD+BPF_B+BPF_IND A <- P[X+k:1]
923 BPF_LD+BPF_W+BPF_LEN A <- len
924 BPF_LD+BPF_IMM A <- k
925 BPF_LD+BPF_MEM A <- M[k]
934 .Bd -literal
935 BPF_LDX+BPF_W+BPF_IMM X <- k
936 BPF_LDX+BPF_W+BPF_MEM X <- M[k]
937 BPF_LDX+BPF_W+BPF_LEN X <- len
938 BPF_LDX+BPF_B+BPF_MSH X <- 4*(P[k:1]&0xf)
944 .Bd -literal
945 BPF_ST M[k] <- A
949 .Bd -literal
950 BPF_STX M[k] <- X
959 .Bd -literal
960 BPF_ALU+BPF_ADD+BPF_K A <- A + k
961 BPF_ALU+BPF_SUB+BPF_K A <- A - k
962 BPF_ALU+BPF_MUL+BPF_K A <- A * k
963 BPF_ALU+BPF_DIV+BPF_K A <- A / k
964 BPF_ALU+BPF_MOD+BPF_K A <- A % k
965 BPF_ALU+BPF_AND+BPF_K A <- A & k
966 BPF_ALU+BPF_OR+BPF_K A <- A | k
967 BPF_ALU+BPF_XOR+BPF_K A <- A ^ k
968 BPF_ALU+BPF_LSH+BPF_K A <- A << k
969 BPF_ALU+BPF_RSH+BPF_K A <- A >> k
970 BPF_ALU+BPF_ADD+BPF_X A <- A + X
971 BPF_ALU+BPF_SUB+BPF_X A <- A - X
972 BPF_ALU+BPF_MUL+BPF_X A <- A * X
973 BPF_ALU+BPF_DIV+BPF_X A <- A / X
974 BPF_ALU+BPF_MOD+BPF_X A <- A % X
975 BPF_ALU+BPF_AND+BPF_X A <- A & X
976 BPF_ALU+BPF_OR+BPF_X A <- A | X
977 BPF_ALU+BPF_XOR+BPF_X A <- A ^ X
978 BPF_ALU+BPF_LSH+BPF_X A <- A << X
979 BPF_ALU+BPF_RSH+BPF_X A <- A >> X
980 BPF_ALU+BPF_NEG A <- -A
989 If the result is true (or non-zero),
991 Jump offsets are encoded in 8 bits so the longest jump is 256 instructions.
998 .Bd -literal
1017 .Bd -literal
1027 .Bd -literal
1028 BPF_MISC+BPF_TAX X <- A
1029 BPF_MISC+BPF_TXA A <- X
1046 .Bl -tag -width indent
1052 makes new BPF users to be attached to write-only interface list until program
1055 This removes any performance degradation for high-speed interfaces.
1059 Permits zero-copy to be used with net BPF readers.
1075 .Bd -literal
1089 .Bd -literal
1100 BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
1112 .Bd -literal
1125 BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
1144 Rick Rashid at Carnegie-Mellon University.
1160 .An -nosplit
1167 Support for zero-copy buffers was added by
1190 and point-to-point interfaces.
1192 broad range of Ethernet-style interfaces.