mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-25 01:42:24 -05:00
53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
/**
|
|
* @file dll/fuse/shared.h
|
|
*
|
|
* @copyright 2015-2018 Bill Zissimopoulos
|
|
*/
|
|
/*
|
|
* This file is part of WinFsp.
|
|
*
|
|
* You can redistribute it and/or modify it under the terms of the GNU
|
|
* General Public License version 3 as published by the Free Software
|
|
* Foundation.
|
|
*
|
|
* Licensees holding a valid commercial license may use this file in
|
|
* accordance with the commercial license agreement provided with the
|
|
* software.
|
|
*/
|
|
|
|
#ifndef WINFSP_DLL_FUSE_SHARED_H_INCLUDED
|
|
#define WINFSP_DLL_FUSE_SHARED_H_INCLUDED
|
|
|
|
#define enosys(env) ('C' == (env)->environment ? 88 : 40)
|
|
|
|
struct fsp_fuse_obj_hdr
|
|
{
|
|
void (*dtor)(void *);
|
|
__declspec(align(MEMORY_ALLOCATION_ALIGNMENT)) UINT8 ObjectBuf[];
|
|
};
|
|
|
|
static inline void *fsp_fuse_obj_alloc(struct fsp_fuse_env *env, size_t size)
|
|
{
|
|
struct fsp_fuse_obj_hdr *hdr;
|
|
|
|
hdr = env->memalloc(sizeof(struct fsp_fuse_obj_hdr) + size);
|
|
if (0 == hdr)
|
|
return 0;
|
|
|
|
hdr->dtor = env->memfree;
|
|
memset(hdr->ObjectBuf, 0, size);
|
|
return hdr->ObjectBuf;
|
|
}
|
|
|
|
static inline void fsp_fuse_obj_free(void *obj)
|
|
{
|
|
if (0 == obj)
|
|
return;
|
|
|
|
struct fsp_fuse_obj_hdr *hdr = (PVOID)((PUINT8)obj - sizeof(struct fsp_fuse_obj_hdr));
|
|
|
|
hdr->dtor(hdr);
|
|
}
|
|
|
|
#endif
|