移植linux内核(3.0.13)的链表实现进windows下,VS编译通过。

//移植linux内核(3.0.13)的链表实现进windows下,VS编译通过。
//待全面测试
//待增加hlist部分
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* transplant linux implement */

#define container_of(ptr, type, member) ((type *)( \
(PCHAR)(address) - \
	(ULONG_PTR)(&((type *)0)->field)))


/* linux kernel list implementation */

typedef int le;
typedef struct list_head lh;
typedef struct hlist_node hn;

struct list_head{lh *next, *prev;};
struct hlist_head{hn *first;};
struct hlist_node{hn *prev, **pprev;};

#define LIST_HEAD_INIT(name) {&(name), &(name)}
#define LIST_HEAD(name) lh name = LIST_HEAD_INIT(name)

static inline void INIT_LIST_HEAD(lh *list)
{
	list->next = list;
	list->prev = list;
}
static inline void __list_add(lh *n, lh *prev, lh *next)
{
	next->prev = n;
	prev->next = n;
	n->next = next;
	n->prev = prev;
}
static inline void list_add(lh *n, lh *head)
{
	__list_add(n, head, head->next);
}
static inline void list_add_tail(lh *n, lh *head)
{
	__list_add(n, head->prev, head);
}

static inline void __list_del(lh *prev, lh *next)
{
	next->prev = prev;
	prev->next = next;
}
static inline void __list_del_entry(lh *entry)
{
	__list_del(entry->prev, entry->next);
}
static inline void list_del(lh *entry)
{
	__list_del_entry(entry);
}
static inline void list_replace(lh *n, lh *old)
{
	n->next = old->next;
	n->prev = old->prev;
	n->next->prev =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: libffi-3.0.13.tar.gz是一个压缩文件,其中包含了libffi库的源代码和相关文件。libffi是一个用于处理不同编程语言之间的函数调用和参数传递的库。它提供了一种通用的接口,使得不同编程语言能够相互调用函数。 libffi-3.0.13.tar.gz文件可以通过解压缩获得libffi库的源代码。在解压缩之后,可以使用编译器将源代码编译成可执行的代码库,在项目中行链接和调用。 使用libffi库,开发人员可以在不同的编程语言之间行函数调用,无论是在同一程内还是跨越不同的程边界。这对于跨平台和跨语言的应用程序非常有用,可以增强程序的功能和灵活性。 libffi库的使用方法较为复杂,需要开发人员对底层函数调用的机制有一定的了解。然而,一旦掌握了libffi库的使用技巧,它可以极大地简化跨语言调用的过程,提高开发效率。 总的来说,libffi-3.0.13.tar.gz是一个开源的库文件,用于跨编程语言行函数调用和参数传递。它提供了一种通用的接口,使得不同编程语言能够方便地相互调用,为开发者提供了更多的灵活性和便利性。 ### 回答2: libffi-3.0.13.tar.gz是一个软件库文件的压缩包。libffi代表"Foreign Function Interface",它提供了一种通用的方法来调用跨语言编写的函数库。libffi库的版本为3.0.13。 .tar.gz是一种常见的压缩文件格式,通常用于在Unix-like操作系统中打包和压缩文件和目录。.tar表示它是一个tarball文件,而.gz表示它被gzip压缩。 要使用libffi-3.0.13.tar.gz,需要按照以下步骤行操作。首先,将压缩包解压缩,这可以通过在命令行中运行以下命令实现: tar -zxvf libffi-3.0.13.tar.gz 这将解压缩文件并在当前目录下创建一个名为libffi-3.0.13的文件夹。然后,入该文件夹: cd libffi-3.0.13 在文件夹中,通常会有一些说明文件、示例代码和编译脚本。根据需要,阅读说明文件以了解如何使用该库。接下来,通过以下命令配置、编译和安装库: ./configure make make install configure命令将根据系统环境和设置配置库。make命令将编译源代码,并生成可执行文件。最后,make install命令将安装库文件到系统中。 安装完成后,即可在系统中使用libffi库。具体使用方式和示例代码可参考官方文档或说明文件。 总而言之,libffi-3.0.13.tar.gz是一个软件库文件的压缩包,需要行解压缩、配置、编译和安装等步骤后,方可在系统中使用该库。 ### 回答3: libffi-3.0.13.tar.gz是一个压缩文件,它是libffi库的源代码包。libffi是一个用于动态调用C函数的开源库,它为不同的编程语言提供了统一的接口。通过libffi,程序可以在运行时动态地根据函数签名调用C函数,而不需要提前知道函数的实现。 libffi库的主要功能是通过适配不同的操作系统和硬件平台的调用约定,使得程序能够正确地调用C函数。它提供了一套接口,让程序可以动态地生成机器码来调用C函数,并将参数和返回值正确地传递。 libffi-3.0.13.tar.gz是libffi库的一个特定版本的源代码包。通过解压这个压缩文件,我们可以获得源代码文件和一些构建脚本。使用这些源代码文件和构建脚本,我们可以将libffi库编译成可执行文件或者动态库,然后在我们的程序中使用它。 要使用libffi库,我们需要首先将源代码编译成二制文件。编译过程可能需要一些额外的依赖库,具体的编译和安装步骤可以参考源代码包中的文档。 总结来说,libffi-3.0.13.tar.gz是libffi库的一个特定版本的源代码包,通过编译和安装这个源代码包,我们可以使用libffi库来动态调用C函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值