blob: c70ec599a23cf46fec22aa0a3e588840e1ce7c40 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
enclave {
include "inc/stat.h"
include "inc/dirent.h"
trusted {
/* define ECALLs here. */
};
untrusted {
int u_open_ocall([out] int *error, [in, string] const char *pathname, int flags);
int u_open64_ocall([out] int *error, [in, string] const char *path, int oflag, int mode);
int u_openat_ocall([out] int *error, int dirfd, [in, string] const char *pathname, int flags);
int u_fstat_ocall([out] int *error, int fd, [out] struct stat_t *buf);
int u_fstat64_ocall([out] int *error, int fd, [out] struct stat64_t *buf);
int u_stat_ocall([out] int *error, [in, string] const char *path, [out] struct stat_t *buf);
int u_stat64_ocall([out] int *error, [in, string] const char *path, [out] struct stat64_t *buf);
int u_lstat_ocall([out] int *error, [in, string] const char *path, [out] struct stat_t *buf);
int u_lstat64_ocall([out] int *error, [in, string] const char *path, [out] struct stat64_t *buf);
uint64_t u_lseek_ocall([out] int *error, int fd, int64_t offset, int whence);
int64_t u_lseek64_ocall([out] int *error, int fd, int64_t offset, int whence);
int u_ftruncate_ocall([out] int *error, int fd, int64_t length);
int u_ftruncate64_ocall([out] int *error, int fd, int64_t length);
int u_truncate_ocall([out] int *error, [in, string] const char *path, int64_t length);
int u_truncate64_ocall([out] int *error, [in, string] const char *path, int64_t length);
int u_fsync_ocall([out] int *error, int fd);
int u_fdatasync_ocall([out] int *error, int fd);
int u_fchmod_ocall([out] int *error, int fd, uint32_t mode);
int u_unlink_ocall([out] int *error, [in, string] const char *pathname);
int u_link_ocall([out] int *error, [in, string] const char *oldpath, [in, string] const char *newpath);
int u_unlinkat_ocall([out] int *error, int dirfd, [in, string] const char *pathname, int flags);
int u_linkat_ocall([out] int *error, int olddirfd, [in, string] const char *oldpath, int newdirfd, [in, string] const char *newpath, int flags);
int u_rename_ocall([out] int *error, [in, string] const char *oldpath, [in, string] const char *newpath);
int u_chmod_ocall([out] int *error, [in, string] const char *path, uint32_t mode);
size_t u_readlink_ocall([out] int *error, [in, string] const char *path, [out, size=bufsz] char *buf, size_t bufsz);
int u_symlink_ocall([out] int *error, [in, string] const char *path1, [in, string] const char *path2);
char *u_realpath_ocall([out] int *error, [in, string] const char *pathname);
int u_mkdir_ocall([out] int *error, [in, string] const char *pathname, uint32_t mode);
int u_rmdir_ocall([out] int *error, [in, string] const char *pathname);
void *u_fdopendir_ocall([out] int *error, int fd);
void *u_opendir_ocall([out] int *error, [in, string] const char *pathname);
int u_readdir64_r_ocall([user_check] void *dirp, [in, out] struct dirent64_t *entry, [out] struct dirent64_t **result);
int u_closedir_ocall([out] int *error, [user_check] void *dirp);
int u_dirfd_ocall([out] int *error, [user_check] void *dirp);
int u_fstatat64_ocall([out] int *error, int dirfd, [in, string] const char *pathname, [out] struct stat64_t *buf, int flags);
};
};