如何在linux RPC规范文件中表示linux内置结构?
我正在使用FUSE和Linux RPC库开发分布式文件系统。 阻碍我的问题是:对于某些函数,例如如何在linux RPC规范文件中表示linux内置结构?,c,rpc,fuse,xdr,C,Rpc,Fuse,Xdr,我正在使用FUSE和Linux RPC库开发分布式文件系统。 阻碍我的问题是:对于某些函数,例如getattr(),我必须使用Linux内置结构,比如struct stat*statbuf,但我不知道如何在上述规范文件(.x文件)中表示它 如果我直接使用struct stat作为成员类型,则自动生成的文件会出现以下错误: /*Structure to hold the 2 values to be used in computation*/ struct getattr_struct {
getattr()
,我必须使用Linux内置结构,比如struct stat*statbuf
,但我不知道如何在上述规范文件(.x文件)中表示它
如果我直接使用struct stat
作为成员类型,则自动生成的文件会出现以下错误:
/*Structure to hold the 2 values to be used in computation*/
struct getattr_struct {
char* path;
/*struct stat *statbuf;*/
};
/*Programme, version and procedure definition*/
program COMPUTE{
version COMPUTE_VERS{
int BB_GETATTR(getattr_struct)=1;
} =6;
} = 456123789;
fuse_rpc_xdr.c:15:86:错误:“xdr_stat”未声明(首次在此函数中使用);你是说“xprt_stat”吗?
*)&objp->statbuf,sizeof(结构状态),(xdrproc_t)xdr_状态)
^~~~~~~~
xprt_统计
fuse_rpc_xdr.c:15:86:注意:每个未声明的标识符对于它出现在其中的每个函数只报告一次
:目标“fuse\u rpc\u xdr.o”的配方失败
由于“struct stat”是一种复杂的数据类型,您需要定义相应的xdr_stat()例程。其方法如本协议第3条所述
bool_t
xdr_getattr_struct (XDR *xdrs, getattr_struct *objp)
{
register int32_t *buf;
if (!xdr_pointer (xdrs, (char **)&objp->path, sizeof (char), (xdrproc_t) xdr_char))
return FALSE;
if (!xdr_pointer (xdrs, (char **)&objp->statbuf, sizeof (struct stat), (xdrproc_t) xdr_stat))
return FALSE;
return TRUE;
}
fuse_rpc_xdr.c:15:86: error: ‘xdr_stat’ undeclared (first use in this function); did you mean ‘xprt_stat’?
*)&objp->statbuf, sizeof (struct stat), (xdrproc_t) xdr_stat))
^~~~~~~~
xprt_stat
fuse_rpc_xdr.c:15:86: note: each undeclared identifier is reported only once for each function it appears in
<builtin>: recipe for target 'fuse_rpc_xdr.o' failed