• [技术干货] TVM虚拟机
    技术核心优势:1. TVM 引擎支持 Lisp、JavaScript、Python、Ruby、Lua、Pascal、Basic 等多种语法。2. TVM 超微型内核引擎(不足500kb),拥有几百个实用函数。 内核模块非常紧凑,所需系统资源很小,因此与其他语言相比加载执行起来更加快速。3. TVM 建立在通用的UNIX系统的C语言库函数基础上, 可以运行在各种操作系统平台,如Windows,Linux,BSDs,Mac OS等。4. TVM 引擎可以进行源代码链接,生成独立的可执行文件。5. TVM 引擎以共享库库的方式可以嵌入到宿主系统中,可作为应用开发的语言平台。6. 动态脚本语言,简单易学,模块化集成,同时具有教学语言的优点: 透明和友好提示。7. 支持符号单元运算, 任何符号都可以用作定义计算的行为,突破了以往计算机编程汉字仅能作为字符串数据来处理的局面, 可将任何符号(例如:中文、简繁体汉字、少数民族语言文字)作为计算机代码来运行。8. 面向对象,基于原型继承。9. 函数式编程涵盖LISP语言抽象语法、独特的符号、表达式处理等突出特点。10. 同时拥有 C 语言的访问底层数据单元,执行系统操作的灵活快捷的特点,和 C 语言一样可以定义结构,访问结构成员和进行指针操作。11. 动态语言弱类型,数据使用前无需宣告声明。 而C语言在编译的过程中须明确操作数的内存单元大小和长度,因此使用前必须事先申明变量符号和函数符号的数据类型。12. 集中强化符号和表达式的处理和操作。包括修改,插入,删除复杂嵌套列表和多维数组结构中的元素。13. 具有多态函数的特点,参与函数运算的参数类型不限和参数个数不限,这使得定义函数有很强的灵活性。14. 函数是特殊的列表,可以象操作列表一样来对函数进行组合和拆分。 除了定义函数外,还可以用宏实现在重构表达式。15. 支持流的输入输出操作,可以包含控制字符的二进制数据访问。16. 支持Perl语言兼容的正则表达式(PCRE)文本处理。17. 具有内存垃圾自动收集的功能。当对象不再被引用时,它们所占用的内存空间自动被回收后再利用。18. 拥有对象、符号目录,供多人协作完成的大型软件项目,既可以引用他人的目标模块,又可以避免变量或函数重名的覆盖危险。19. 除了使用内建函数外,还可以通过导入共享库来进行功能扩展。 比如调用 windows 操作系统的库函数来实现GUI界面,使用 COM 对象、.NET 框架等等。20. TeaScript 可运用于分布计算、科学统计、图形与图像和人工智能领域。 HTTP、 TCP/IP 和UDP 套节字界面使得它很容易编写网络应用程序。
  • [常见问题汇总帖] 在虚拟机中ebpf程序跟踪socket得到的源IP地址和目的ip地址一样
    在虚拟机上进行编译和执行,得到的结果源地址IP和目的地址IP是一样的,网络用的桥接模式。在user程序中进行对百度的ping操作。而且监控网口改成了我自己的网口。但是得到的就有我虚拟机的地址,socket源和目的地址都是。这是负责储存信息的结构体,在map中作为键key。这是给结构体中源和目标地址赋值的操作函数部分。这是map,值为包的数量和大小的结构体。这是user态的输出。像是端口,协议号,包数和数据大小都能正常输出,就是这个源地址和目的地址是一样的。然后我把源和目的地址改成定值1和2.输出就是1和2,感觉这是对的(没有ping百度,是连接的vscode,走22端口)然后我又去看了这个struct __sk_buff的偏移量,确实也是不一样的,源地址n1的偏移量26,目的地址n2的偏移量30,理应得到两个不同的内容才对。这俩load_word函数得到的理应是不同的值才对。但输出的确实是同一个值。但输出就是一样的,就怀疑是struct __sk_buff结构体里面填充的源和目的地址是一样的。这个程序就是源码目录下/samples/bpf/sockex3.我不能理解为什么,也许是我没理解到程序在做什么,求救大佬指导。
  • [问题求助] 如何用int _sockops(struct bpf_sock_ops *ctx)函数实现对tcp套接字状态的跟踪啊。
    使用c语言ebpf和int _sockops(struct bpf_sock_ops *ctx)函数,map随意我是初学者,死活写不出来,求教大佬们。
  • [常见问题汇总帖] 无法生成vmlinux.h
    租了一个HECS(云耀云服务器)。版本下图所示。CONFIG_DEBUG_INFO_BTF状态开启。这是bpftool的版本也存在vmlinux文件这是我内核源码文件的截图。但是生成vmlinux.h时总会报错。