本文整理汇总了C++中prandom_u32函数的典型用法代码示例。如果您正苦于以下问题:C++ prandom_u32函数的具体用法?C++ prandom_u32怎么用?C++ prandom_u32使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了prandom_u32函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: double_bit_error_data
static void double_bit_error_data(void *error_data, void *correct_data,
size_t size)
{
unsigned int offset[2];
offset[0] = prandom_u32() % (size * BITS_PER_BYTE);
do {
offset[1] = prandom_u32() % (size * BITS_PER_BYTE);
} while (offset[0] == offset[1]);
memcpy(error_data, correct_data, size);
__change_bit_le(offset[0], error_data);
__change_bit_le(offset[1], error_data);
}
开发者ID:03199618,项目名称:linux,代码行数:15,代码来源:mtd_nandecctest.c
示例2: random_ecc_bit
static unsigned int random_ecc_bit(size_t size)
{
unsigned int offset = prandom_u32() % (3 * BITS_PER_BYTE);
if (size == 256) {
/*
* Don't inject a bit error into the insignificant bits (16th
* and 17th bit) in ECC code for 256 byte data block
*/
while (offset == 16 || offset == 17)
offset = prandom_u32() % (3 * BITS_PER_BYTE);
}
return offset;
}
开发者ID:03199618,项目名称:linux,代码行数:15,代码来源:mtd_nandecctest.c
示例3: round_up
struct bpf_binary_header *bpf_alloc_binary(unsigned int proglen,
u8 **image_ptr)
{
unsigned int sz, hole;
struct bpf_binary_header *header;
/* Most of BPF filters are really small,
* but if some of them fill a page, allow at least
* 128 extra bytes to insert a random section of int3
*/
sz = round_up(proglen + sizeof(*header) + 128, PAGE_SIZE);
header = module_alloc(sz);
if (!header)
return NULL;
memset(header, 0xcc, sz); /* fill whole space with int3 instructions */
header->pages = sz / PAGE_SIZE;
hole = sz - (proglen + sizeof(*header));
/* insert a random number of int3 instructions before BPF code */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
*image_ptr = &header->image[prandom_u32() % hole];
#else
*image_ptr = &header->image[32 % hole];
#endif
return header;
}
开发者ID:iovisor-obsolete,项目名称:old_bpf_historical,代码行数:28,代码来源:bpf2_jit_comp.c
示例4: gact_net_rand
static int gact_net_rand(struct tcf_gact *gact)
{
smp_rmb(); /* coupled with smp_wmb() in tcf_gact_init() */
if (prandom_u32() % gact->tcfg_pval)
return gact->tcf_action;
return gact->tcfg_paction;
}
开发者ID:faddat,项目名称:linux-mainline-next,代码行数:7,代码来源:act_gact.c
示例5: yam_arbitrate
static void yam_arbitrate(struct net_device *dev)
{
struct yam_port *yp = netdev_priv(dev);
if (yp->magic != YAM_MAGIC || yp->tx_state != TX_OFF ||
skb_queue_empty(&yp->send_queue))
return;
/* tx_state is TX_OFF and there is data to send */
if (yp->dupmode) {
/* Full duplex mode, don't wait */
yam_start_tx(dev, yp);
return;
}
if (yp->dcd) {
/* DCD on, wait slotime ... */
yp->slotcnt = yp->slot / 10;
return;
}
/* Is slottime passed ? */
if ((--yp->slotcnt) > 0)
return;
yp->slotcnt = yp->slot / 10;
/* is random > persist ? */
if ((prandom_u32() % 256) > yp->pers)
return;
yam_start_tx(dev, yp);
}
开发者ID:383530895,项目名称:linux,代码行数:31,代码来源:yam.c
示例6: __sbitmap_queue_get
int __sbitmap_queue_get(struct sbitmap_queue *sbq)
{
unsigned int hint, depth;
int nr;
hint = this_cpu_read(*sbq->alloc_hint);
depth = READ_ONCE(sbq->sb.depth);
if (unlikely(hint >= depth)) {
hint = depth ? prandom_u32() % depth : 0;
this_cpu_write(*sbq->alloc_hint, hint);
}
nr = sbitmap_get(&sbq->sb, hint, sbq->round_robin);
if (nr == -1) {
/* If the map is full, a hint won't do us much good. */
this_cpu_write(*sbq->alloc_hint, 0);
} else if (nr == hint || unlikely(sbq->round_robin)) {
/* Only update the hint if we used it. */
hint = nr + 1;
if (hint >= depth - 1)
hint = 0;
this_cpu_write(*sbq->alloc_hint, hint);
}
return nr;
}
开发者ID:AshishNamdev,项目名称:linux,代码行数:26,代码来源:sbitmap.c
示例7: qtnf_mgmt_tx
static int
qtnf_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
struct cfg80211_mgmt_tx_params *params, u64 *cookie)
{
struct qtnf_vif *vif = qtnf_netdev_get_priv(wdev->netdev);
const struct ieee80211_mgmt *mgmt_frame = (void *)params->buf;
u32 short_cookie = prandom_u32();
u16 flags = 0;
*cookie = short_cookie;
if (params->offchan)
flags |= QLINK_MGMT_FRAME_TX_FLAG_OFFCHAN;
if (params->no_cck)
flags |= QLINK_MGMT_FRAME_TX_FLAG_NO_CCK;
if (params->dont_wait_for_ack)
flags |= QLINK_MGMT_FRAME_TX_FLAG_ACK_NOWAIT;
pr_debug("%s freq:%u; FC:%.4X; DA:%pM; len:%zu; C:%.8X; FL:%.4X\n",
wdev->netdev->name, params->chan->center_freq,
le16_to_cpu(mgmt_frame->frame_control), mgmt_frame->da,
params->len, short_cookie, flags);
return qtnf_cmd_send_mgmt_frame(vif, short_cookie, flags,
params->chan->center_freq,
params->buf, params->len);
}
开发者ID:mkrufky,项目名称:linux,代码行数:29,代码来源:cfg80211.c
示例8: do_operation
static int do_operation(void)
{
if (prandom_u32() & 1)
return do_read();
else
return do_write();
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:7,代码来源:stresstest.c
示例9: pick_new_mon
/*
* Pick a new monitor at random and set cur_mon. If we are repicking
* (i.e. cur_mon is already set), be sure to pick a different one.
*/
static void pick_new_mon(struct ceph_mon_client *monc)
{
int old_mon = monc->cur_mon;
BUG_ON(monc->monmap->num_mon < 1);
if (monc->monmap->num_mon == 1) {
monc->cur_mon = 0;
} else {
int max = monc->monmap->num_mon;
int o = -1;
int n;
if (monc->cur_mon >= 0) {
if (monc->cur_mon < monc->monmap->num_mon)
o = monc->cur_mon;
if (o >= 0)
max--;
}
n = prandom_u32() % max;
if (o >= 0 && n >= o)
n++;
monc->cur_mon = n;
}
dout("%s mon%d -> mon%d out of %d mons\n", __func__, old_mon,
monc->cur_mon, monc->monmap->num_mon);
}
开发者ID:acton393,项目名称:linux,代码行数:34,代码来源:mon_client.c
示例10: round_up
static struct bpf_binary_header *bpf_alloc_binary(unsigned int proglen,
u8 **image_ptr)
{
unsigned int sz, hole;
struct bpf_binary_header *header;
/* Most of BPF filters are really small,
* but if some of them fill a page, allow at least
* 128 extra bytes to insert a random section of int3
*/
sz = round_up(proglen + sizeof(*header) + 128, PAGE_SIZE);
/*
header = module_alloc(sz);
if (!header)
return NULL;
*/
header = mmap(NULL, sz, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
if ((void *)header == MAP_FAILED) {
perror("bpf_jit_comp.c: mmap");
exit(EXIT_FAILURE);
}
memset(header, 0xcc, sz); /* fill whole space with int3 instructions */
header->pages = sz / PAGE_SIZE;
hole = min(sz - (proglen + sizeof(*header)), PAGE_SIZE - sizeof(*header));
/* insert a random number of int3 instructions before BPF code */
#define prandom_u32() 0
*image_ptr = &header->image[prandom_u32() % hole];
#undef prandom_u32
return header;
}
开发者ID:Igalia,项目名称:pflua-bench,代码行数:34,代码来源:bpf_jit_comp.c
示例11: ceph_mdsmap_get_random_mds
/*
* choose a random mds that is "up" (i.e. has a state > 0), or -1.
*/
int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m)
{
int n = 0;
int i;
/* special case for one mds */
if (1 == m->m_max_mds && m->m_info[0].state > 0)
return 0;
/* count */
for (i = 0; i < m->m_max_mds; i++)
if (m->m_info[i].state > 0)
n++;
if (n == 0)
return -1;
/* pick */
n = prandom_u32() % n;
i = 0;
for (i = 0; n > 0; i++, n--)
while (m->m_info[i].state <= 0)
i++;
return i;
}
开发者ID:513855417,项目名称:linux,代码行数:28,代码来源:mdsmap.c
示例12: nf_nat_l4proto_unique_tuple
void nf_nat_l4proto_unique_tuple(const struct nf_nat_l3proto *l3proto,
struct nf_conntrack_tuple *tuple,
const struct nf_nat_range *range,
enum nf_nat_manip_type maniptype,
const struct nf_conn *ct,
u16 *rover)
{
unsigned int range_size, min, i;
__be16 *portptr;
u_int16_t off;
if (maniptype == NF_NAT_MANIP_SRC)
portptr = &tuple->src.u.all;
else
portptr = &tuple->dst.u.all;
/* If no range specified... */
if (!(range->flags & NF_NAT_RANGE_PROTO_SPECIFIED)) {
/* If it's dst rewrite, can't change port */
if (maniptype == NF_NAT_MANIP_DST)
return;
if (ntohs(*portptr) < 1024) {
/* Loose convention: >> 512 is credential passing */
if (ntohs(*portptr) < 512) {
min = 1;
range_size = 511 - min + 1;
} else {
min = 600;
range_size = 1023 - min + 1;
}
} else {
min = 1024;
range_size = 65535 - 1024 + 1;
}
} else {
min = ntohs(range->min_proto.all);
range_size = ntohs(range->max_proto.all) - min + 1;
}
if (range->flags & NF_NAT_RANGE_PROTO_RANDOM) {
off = l3proto->secure_port(tuple, maniptype == NF_NAT_MANIP_SRC
? tuple->dst.u.all
: tuple->src.u.all);
} else if (range->flags & NF_NAT_RANGE_PROTO_RANDOM_FULLY) {
off = prandom_u32();
} else {
off = *rover;
}
for (i = 0; ; ++off) {
*portptr = htons(min + off % range_size);
if (++i != range_size && nf_nat_used_tuple(tuple, ct))
continue;
if (!(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL))
*rover = off;
return;
}
}
开发者ID:020gzh,项目名称:linux,代码行数:59,代码来源:nf_nat_proto_common.c
示例13: bitfliptest_do_operation
static int bitfliptest_do_operation(void)
{
if (prandom_u32() & 1) {
return bitfliptest_do_read();
} else {
return bitfliptest_do_write();
}
}
开发者ID:ShinySide,项目名称:SM-G361H,代码行数:8,代码来源:nandflash_bitfliptest.c
示例14: single_bit_error_data
static void single_bit_error_data(void *error_data, void *correct_data,
size_t size)
{
unsigned int offset = prandom_u32() % (size * BITS_PER_BYTE);
memcpy(error_data, correct_data, size);
__change_bit_le(offset, error_data);
}
开发者ID:020gzh,项目名称:linux,代码行数:8,代码来源:mtd_nandecctest.c
示例15: rand_offs
static int rand_offs(void)
{
unsigned int offs;
offs = prandom_u32();
offs %= bufsize;
return offs;
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:8,代码来源:stresstest.c
示例16: rand_len
static int rand_len(int offs)
{
unsigned int len;
len = prandom_u32();
len %= (bufsize - offs);
return len;
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:8,代码来源:stresstest.c
示例17: bitfliptest_rand_len
static int bitfliptest_rand_len(int offs)
{
unsigned int len = 0;
len = prandom_u32();
len %= (bufsize - offs);
return len;
}
开发者ID:ShinySide,项目名称:SM-G361H,代码行数:8,代码来源:nandflash_bitfliptest.c
示例18: bitfliptest_rand_offs
static int bitfliptest_rand_offs(void)
{
unsigned int offs = 0;
offs = prandom_u32();
offs %= bufsize;
return offs;
}
开发者ID:ShinySide,项目名称:SM-G361H,代码行数:8,代码来源:nandflash_bitfliptest.c
示例19: rtw_random32
inline u32 rtw_random32(void)
{
#ifdef PLATFORM_LINUX
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
return prandom_u32();
#else
return random32();
#endif
#endif
}
开发者ID:instantaphex,项目名称:rtl8723as,代码行数:10,代码来源:osdep_service.c
示例20: mmp_new_seq
/*
* Get a random new sequence number but make sure it is not greater than
* EXT4_MMP_SEQ_MAX.
*/
static unsigned int mmp_new_seq(void)
{
u32 new_seq;
do {
new_seq = prandom_u32();
} while (new_seq > EXT4_MMP_SEQ_MAX);
return new_seq;
}
开发者ID:AkyZero,项目名称:wrapfs-latest,代码行数:14,代码来源:mmp.c
注:本文中的prandom_u32函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论