Linux 相关宏介绍

container_of请参考:container_of宏的简介及使用-CSDN博客

BITS_TO_LONGS宏定义如下:

#define BITS_PER_BYTE           8
#define BITS_TO_LONGS(nr)       DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))#define BITS_TO_LONGS(x)    (((x) + 8 * sizeof (unsigned long) - 1) / (8 * sizeof (unsigned long)))#if 0
我们把#define BITS_TO_LONGS(x)    (((x) + 8 * sizeof (unsigned long) - 1) / (8 * sizeof (unsigned long)))简化一下,变成如下:
#define BITS_TO_LONGS(x)    (((x) + 8 - 1) / (8))#endif

BITS_TO_LONGS(x):x个bit位需要用多少个long来表示。这个解释有点拗口。举个例子:

long在64位系统默认是8字节:

BITS_TO_LONGS(1)=1,        //1个bit位,需要用1个long来表示。1个long就是64bit

BITS_TO_LONGS(64)=1,        //64个bit位,需要用1个long来表示。2个long就是64bit

BITS_TO_LONGS(65)=2                //65个bit位,需要用2个long来表示。1个long是64bit,所以65bit需要用2个long来表示

BIT_WORD、BIT_MASK:

#ifdef CONFIG_64BIT
#define BITS_PER_LONG 64
#else
#define BITS_PER_LONG 32
#endif /* CONFIG_64BIT */#define BIT_MASK(nr)        (1UL << ((nr) % BITS_PER_LONG))
#define BIT_WORD(nr)        ((nr) / BITS_PER_LONG)

BIT_MASK(nr):将1左移nr对64取余的值的位数

BIT_WORD(nr):nr除以64的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java springboot+redis网上水果超市商城设计和实现以及文档

基于java springbootredis网上水果超市商城设计和实现以及文档 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留…

Day17:信息打点-APP资产知识产权应用监控静态提取动态抓包动态调试

目录 案例1&#xff1a;名称获取APP信息&#xff08;爱企查/小蓝本/七麦/点点&#xff09; 案例2&#xff1a;URL网站备案查APP 案例3&#xff1a;APP提取信息-静态分析 案例3&#xff1a;APP提取信息-动态抓包 案例4&#xff1a;APP提取信息-动态调试 思维导图 章节知识…

Centos8 yum方式安装Redis

Centos8 yum方式安装多个Redis 是否安装GCC依赖 ggc -v #或者 rpm -q gcc安装GCC yum install -y gcc如果不是管理员 加 sudo sudo yum install -y gcc yum安装Redis yum install redis失败更新yum 再安装 #添加EPEL仓库 sudo yum install epel-release#更新yum源 sudo yum upd…

私域干货:3步轻松拿捏用户分层

在当今互联网时代&#xff0c;私域流量越来越受到电商和营销人员的重视。而拿捏用户分层&#xff0c;是私域流量运营中非常重要的一环。 下面就让我们一起来看看如何通过3步轻松拿捏用户分层。 1、定义目标用户 首先&#xff0c;拿捏用户分层的第一步是要明确定义目标用户。…

智能电网监控:图像分类技术在能源电力领域的创新应用

一、引言 在当今这个对能源效率要求日益增长的时代&#xff0c;电力行业正面临着前所未有的挑战。为了满足日益增长的电力需求&#xff0c;同时确保电网的稳定性和可靠性&#xff0c;我们采用了一种革命性的方法&#xff1a;通过智能算法和自动化技术来优化电网的运行。这一项…

网络学习:SMart link技术与Monitor link技术

目录 一、SMart link技术 1.1、SMart link技术简介 1.2、SMart link技术原理及基础知识点 1、应用场景&#xff08;举例&#xff09;&#xff1a; 2、运行机制 3、保护vlan 4、控制VLAN 5、Flush报文 6、SMart link的负载分担机制 7、SMart link角色抢占模式 二、Mo…

中文文本分类_1(pytorch 实现)

import torch import torch.nn as nn import torchvision from torchvision import transforms, datasets import os, PIL, pathlib, warningswarnings.filterwarnings("ignore") # 忽略警告信息# win10系统 device torch.device("cuda" if torch.cuda.i…

三级分销数据库设计

一&#xff0c;数据结构 二&#xff0c;查询方法 1.mysql递归查询 获取id9的所有上级 r : 9 设置自己所要搜索子节点的id SELECTT2.* FROM(SELECTr AS _id,( SELECT r : pid FROM sj_user WHERE id _id ) AS 2v2,l : l 1 AS lvl FROM( SELECT r : 9 ) vars, -- 查询id为…

【不可不知的考研复试秘籍 3】

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

软考信息系统项目管理师零基础怎么学习?

软考考信息系统项目管理师&#xff0c;零基础怎么入手高项&#xff1f; 要我说对于没有基础的人群来说零基础考信息系统项目管理师还是有一定的难度的&#xff0c;难就难在需要时间去了解基础&#xff0c;而相对于系统分析师、系统构架设计师、网络规划设计师、系统规划与管理…

软考59-上午题-【数据库】-小结+杂题

一、杂题 真题1&#xff1a; 真题2&#xff1a; 真题3&#xff1a; 真题4&#xff1a; 真题5&#xff1a; 真题6&#xff1a; 真题7&#xff1a; 真题8&#xff1a; 二、数据库总结 考试题型&#xff1a; 1、选择题&#xff08;6题&#xff0c;6分&#xff09; 2、综合分析题…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了&#xff0c;还有很多小伙伴不会开通&#xff0c;其实开通很简单&#xff0c;环境需要自己搞定&#xff0c;升级的话就需要一张visa卡&#xff0c;办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

使用java的Stream流进行Collectors.groupingBy分组后生成Map,对Map进行删除原集合是否会发生改变

在Java中&#xff0c;当我们使用Collectors.groupingBy方法对集合进行分组操作时&#xff0c;生成的新映射&#xff08;Map&#xff09;是基于原始集合&#xff08;allItems&#xff09;的数据结构和内容创建的。这意味着&#xff0c;如果你更改了新的映射allItemMap中的值&…

开发中的一些重要概念

目录 应用&#xff08;Application&#xff09;/ 系统&#xff08;System&#xff09; 模块&#xff08;Module&#xff09;/ 组件&#xff08;Component&#xff09; 分布式&#xff08;Distributed&#xff09; 集群&#xff08;Cluster&#xff09; 主&#xff08;Maste…

leetcode热题HOT 238. 除自身以外数组的乘积

一、问题描述&#xff1a; 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#x…

web游戏-飞机大战

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html lang=&q…

Golang简介与基本语法介绍

Go语言&#xff08;通常称为Golang&#xff09;是由Google开发的一种静态强类型、编译型、并发性强的编程语言。Go语言的设计初衷是为了提高大型软件系统的开发效率&#xff0c;并解决其他编程语言在处理多核处理器、网络系统和大型代码库时遇到的一些问题。 一、Go语言的特点…

防止 服务器 被爆破 登录的 方法

防止 服务器 被爆破 登录的 方法 Centos8防止云服务器被爆破登录的应对办法 https://blog.csdn.net/qq_64573330/article/details/126948166

【牛客】SQL136 每类试卷得分前3名-窗口函数

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602021-09-01 06:00:0029002SQLhard602021-09…

请解释Netty中的Pipeline和ChannelHandler,以及它们是如何工作的?如何在Netty中实现消息的编解码?有哪些常用的编解码器?

请解释Netty中的Pipeline和ChannelHandler&#xff0c;以及它们是如何工作的&#xff1f; 在Netty中&#xff0c;Pipeline和ChannelHandler是两个核心概念&#xff0c;它们共同协作来处理网络事件和数据流。 Pipeline&#xff08;管道&#xff09; Pipeline可以看作是一个处理…