为EFS提供C API

问题:

EFS是我最近学习Erlang的过程中写的一个mini分布式文件系统,仿Google File System。希望给它提供一套C API,以方便利用现有的C库,如与NFSv3,或Fuse的整合。用Erl_interface库可以很easy的做到这一点,这是否从C调用Erlang的唯一方法?Port或linked-in Port是Erlang调C实现的功能,Port是在Erlang一方启动外部程序的,反过来行吗?[b](由port所启动的外部程序作为server,提供c api,也是可行的,按面向对象的理解,进程作为对象,提供服务作为接口)。[/b]

本质上,不管Port,还是Erl_interface,不同语言都是通过IPC机制来实现通信的,类似socket通信,要处理的是通信协议,链接管理,数据的编码和解码等。Erl_interface能极大的简化这些任务。

[quote]
Ports provide the basic mechanism for communication with the external world, from Erlang's point of view. They provide a byte-oriented interface to an external program. When a port has been created, Erlang can communicate with it by sending and receiving lists of bytes (not Erlang terms). This means that the programmer may have to invent a suitable encoding and decoding scheme.

A C program which uses the Erl_Interface functions for setting up a connection to and communicating with a distributed Erlang node is called a C node, or a hidden node. The main advantage with a C node is that the communication from the Erlang programmer's point of view is extremely easy, since the C program behaves as a distributed Erlang node.
[/quote]

大概思路如下:


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>

#include "erl_interface.h"
#include "ei.h"

#include "efs.h"

int erlang_fd = -1;

/* -------------------------------------------------- */
/* API */
/* -------------------------------------------------- */
int efs_init()
{
int ret, fd;

erl_init(NULL, 0);

if (erl_connect_init(1, "secretcookie", 0) == -1)
erl_err_quit("erl_connect_init");

if ((fd = erl_connect("e1@uss")) < 0)
erl_err_quit("erl_connect");

fprintf(stderr, "Connected to e1@uss\n\r");
erlang_fd = fd;

return 0;
}

int efs_destroy()
{
return 0;
}

int efs_create(const char *path, int mode)
{
int ret;
ETERM *args;
ETERM *reply;

args = erl_format("[~s]", path);

reply = erl_rpc(erlang_fd, "efs", "create", args);
if (reply == NULL) {
ret = EINVAL;
fprintf(stderr, "error %d\n", ret);
goto err_ret;
}

erl_free_term(reply);
erl_free_term(args);

return 0;
err_ret:
erl_free_term(args);
return ret;
}

int efs_close(int fd)
{
return 0;
}

/**
* test utilities.
* create fcount files, every file size is fsize.
*/
int efs_shell_ww(int fcount, int fsize)
{
int ret;
ETERM *args;
ETERM *reply;

args = erl_format("[~i,~i]", fcount, fsize);

reply = erl_rpc(erlang_fd, "efs_shell", "ww", args);
if (reply == NULL) {
ret = EINVAL;
fprintf(stderr, "error %d\n", ret);
goto err_ret;
}

erl_free_term(reply);
erl_free_term(args);

return 0;
err_ret:
erl_free_term(args);
return ret;
}

/* -------------------------------------------------- */
/* Entry point */
/* -------------------------------------------------- */
int main(int argc, char **argv)
{
int ret;

efs_init();

ret = efs_create("afile", 0644);

ret = efs_shell_ww(100, 1024*1024);


return 0;
}

高通9x07平台关于模块modem射频 RF MCFG生成MBN的总结 1.1: cefs(efs2.mbn)制作步骤:1.擦擦CEFS分区;2.导入HW_MBN,并激活;3.导入静态NV;4.生成CEFS; 1.2:激活hw_default mbn后,/policyman/目录下device_config.xml必需保留; 1.3:万一device_config.xml删除补救措施: (1).通过各个sw mbn配制device_config.xml,进行MBN OTA升级; (2).device_config.xml损坏,通过cefs软件还原功能(需有cefs备份分 阅读详情

相关推荐

Windows EFS加密原理深度解析:从证书备份到企业级数据恢复

文件加密是数据安全的基础技术,其核心在于通过密码学算法将明文转换为密文,确保数据在存储和传输过程中的机密性。Windows EFS(加密文件系统)采用混合加密模式,结合高效的对称加密算法(如AES)与非对称加密(如RSA),实现了透明、高效的文件级加密。这一技术在企业内网数据防泄漏和满足合规性要求方面具有重要价值,尤其适用于保护财务报告、客户数据等敏感信息。然而,EFS加密的常见陷阱包括系统重装后证书丢失导致数据永久锁死,以及在不同用户间共享文件时遇到权限墙。理解其基于公钥基础设施(PKI)的透明加密体系,

weixin_33796205的博客 606

Efs API文档

extjs的扩展框架,同时,可以支持PHP,java,.NET等框架,为用户在设计web前端脚本时提供方便

S3与EFS深度选型与成本优化实战指南

对象存储与文件存储是云原生架构中最基础也最易误用的两类服务。理解S3的HTTP资源语义和EFS的POSIX文件系统语义,是避免权限混乱、性能瓶颈与隐性成本超支的前提。其核心原理在于访问模型差异:S3面向无状态服务提供高并发、最终一致的对象读写;EFS则为多实例共享提供强一致性、低延迟的文件级操作。技术价值体现在稳定性保障(如规避ACL与Bucket Policy冲突)、成本可控(如识别Standard-IA最小存储时长陷阱)及弹性适配(如EFS突发吞吐模式与存储量的动态关系)。典型应用场景包括用户媒体直传(

weixin_30314813的博客 477

aws----文件存储efs的全面了解

efs简介 Amazon Elastic File System 可扩展的、弹性原生云 NFS 文件系统,每月 0.08 USD/GB Amazon EFS 是一项完全托管的服务,让您可以轻松地在 Amazon 云中设置和扩展文件存储,并对其进行成本优化。只需在 AWS 管理控制台中单击几次,您就可以创建文件系统,供 Amazon EC2 实例通过文件系统界面(使用标准操作系统文件 I/O API...

直到世界的尽头 9841

AWS S3与EFS协同实战:生产级文件系统搭建与成本优化

对象存储与文件存储是云原生架构的两大基础范式。S3作为高可用、高扩展的对象存储服务,依托全局唯一URL和版本控制实现海量非结构化数据管理;EFS则通过标准NFSv4.1协议提供POSIX兼容的共享文件系统能力,支撑实时日志、CI/CD缓存等低延迟场景。二者在安全模型(IAM策略 vs NFS权限)、计费维度(请求次数+存储 vs 吞吐+IOPS)及一致性语义上存在本质差异,错误混用将导致性能骤降与成本失控。本文聚焦S3+EFS混合架构的工程落地,涵盖TLS加密挂载、智能分层归档、burst credit监控

weixin_34133829的博客 478

浏览器配置文件安全防护:EFS加密实战指南

数据加密是信息安全的基础技术,其核心原理是通过算法将明文信息转换为无法直接读取的密文,从而在存储和传输过程中保护数据的机密性。在计算机安全领域,磁盘加密与文件系统加密是实现数据静态保护的关键技术,它们能有效防止物理窃取或未授权访问导致的数据泄露。对于个人用户和开发者而言,保护本地敏感数据,尤其是浏览器用户配置文件,具有极高的技术价值和现实意义。浏览器配置文件存储着浏览历史、密码、Cookie等核心身份数据,一旦泄露将直接威胁数字身份安全。本文聚焦于利用Windows EFS(加密文件系统)这一原生技术,为浏

weixin_30699955的博客 457

EFSL文件系统移植记录

在使用SD卡的过程中用到了文件系统,这里选择了efsl,并做了相应的移植与验证。        efsl全称为embeded file system library,是一个开源的SD卡文件系统,所占内存空间少,移植起来比较方便,适合中小容量的单片机。efsl兼容fat12/16/32,同时支持多设备及多文件操作。每个设备的驱动程序,只需要提供扇区写和扇区读两个函数即可。        efsl

DanielLee_ustb的专栏 1万+

告别单纯复现:用Metasploit的msfvenom为EFS漏洞定制专属后门(附免杀思路)

本文深入探讨如何将Easy File Sharing Web Server漏洞与Metasploit框架结合,定制专属后门并实现免杀。从漏洞复现到实战武器化,详细解析攻击链设计、Meterpreter载荷定制及高级免杀技术,帮助安全测试者提升实战能力。

weixin_33728268的博客 398

Amazon EKS 使用 EFS服务

kubernetes

qianghong000的博客 1297

AWS生产级存储架构:S3与EFS选型、调优与故障排查实战

对象存储与文件存储是云原生架构中两类基础数据持久化范式。S3以HTTP API和最终一致性为特征,适用于高并发、不可变、全球可读的数据场景;EFS则基于NFSv4.1与POSIX语义,专为多实例协同、低延迟文件操作而设计。二者差异不在性能快慢,而在访问模型、一致性保证与权限体系的根本分野。理解S3的强一致PUT、最终一致DELETE,以及EFS对fsync、rename等原子操作的严格保障,是避免CI/CD中断、日志重复、挂载失败等高频故障的前提。本文聚焦真实生产环境中的S3生命周期策略误用、EFS吞吐模式

congsong2560的博客 411

Windows 11 EFS文件加密:告别第三方工具,用系统自带功能守护数据安全

数据加密是信息安全领域的核心基础技术,其原理是通过特定算法将明文信息转换为无法直接读取的密文,从而确保数据的机密性。在技术实现上,现代操作系统通常集成透明加密机制,如Windows的加密文件系统(EFS),它在文件系统驱动层实现非对称加密与对称加密的协同工作,对用户操作无感。这种深度系统集成的方案,其技术价值在于提供了稳定、高效且经过长期安全验证的保护手段,避免了第三方工具可能带来的捆绑风险或算法隐患。在应用场景上,无论是保护个人财务记录、私密照片,还是企业敏感项目文档,系统原生加密功能都能以零成本提供企业

weixin_34194087的博客 480

解决90%的常见问题:Amazon EFS CSI Driver故障排查指南

Amazon EFS CSI Driver是Kubernetes集群中挂载Amazon EFS和S3文件系统的关键组件,但配置和使用过程中难免会遇到各种问题。本文为您提供一份完整的故障排查指南,帮助您快速定位和解决90%的常见问题,让您的存储卷挂载更加稳定可靠。 ## 🔍 常见问题快速诊断表 | 症状 | 可能原因 | 快速检查方法 | |------|----------|--------

gitblog_00403的博客 452

EFS文件打不开?Advanced EFS Data Recovery解密恢复指南

数据加密是保障信息安全的重要手段,Windows系统自带的EFS加密功能虽然操作简便,但系统重装、账户异常或证书缺失后,加密文件无法访问的问题常让运维人员头疼。EFS采用证书与私钥双重保护机制,私钥丢失或SID变化是导致EFS加密文件打不开的根本原因。借助Advanced EFS Data Recovery这类专业数据恢复工具,可以扫描磁盘中残留的密钥材料、SAM文件和注册表信息,重组私钥并完成EFS解密。针对普通用户和IT支持人员,从加密原理到工具选型,再到恢复流程与避坑技巧,帮助您在面对系统崩溃、账户删

dengjuanshou7445的博客 432

Windows应用技巧___Desktop 文件夹EFS加密常用解密方法

在“当前用户——》个人——》证书”分支下,可以看到一个以用户名命名的证书(如果还没有在NTFS分区上加密任何数据,这里是不会有证书的)。首先执行“开始——》运行”命令,在弹出的“运行”对话框中输入“certmgr.msc”命令后按下Enter键,打开证书管理器。文件或文件夹----》右击打开文件或文件夹属性-----》点击 高级(D)…系统即会打开证书导出向导,按提示单击“下一步”按钮,直至询问是否导出密钥,选择“导出密钥”即可。(

Sweeper_78969483的博客 1882

离线环境下 Ubuntu 22.04 制作自定义apt源 安装 Docker环境 的部署方案

本文介绍了一种在无外网环境下部署服务器项目的离线方案。通过在外网环境中制作包含APT软件包和Docker镜像的离线资源包,实现在内网环境中的完整部署。方案详细说明了离线APT源的制作方法、Docker镜像的导出/导入流程,以及内网服务器的软件安装和网络配置步骤。特别强调了版本一致性、目录结构规范和网络适配等注意事项,适用于需要严格隔离网络的生产环境部署。该方案具有可扩展性,可根据实际需求调整软件包和镜像列表。

mmx_2022的博客 654

RISC-V内核移植实战:从零开始手把手实现RT-Thread上下文切换(附GD32VF103代码解析)

本文详细解析了在RISC-V架构上移植RT-Thread实时操作系统的核心步骤,重点聚焦于上下文切换机制的实现。通过对比ARM Cortex-M与RISC-V在中断处理和寄存器管理上的关键差异,并以GD32VF103开发板为例,手把手指导开发者完成libcpu抽象层适配、线程栈初始化以及三种上下文切换方式的代码编写与调试,为嵌入式开发者从ARM转向RISC-V平台提供了实战指南。

fern8的博客 740
上一篇: Erlang interoperability
下一篇: 开源项目egfs
kernel121
博客等级 码龄16年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值