File indexing completed on 2025-05-11 08:24:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include "test_driver.h"
0033
0034 #include <rtems/libio.h>
0035
0036 char test_data[PAGE_SIZE];
0037
0038 static int handler_fstat(
0039 const rtems_filesystem_location_info_t *loc,
0040 struct stat *buf
0041 )
0042 {
0043 buf->st_mode = S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO;
0044 return 0;
0045 }
0046
0047 static int handler_mmap(
0048 rtems_libio_t *iop,
0049 void **addr,
0050 size_t len,
0051 int prot,
0052 off_t off
0053 )
0054 {
0055 if ( len <= sizeof(test_data) ) {
0056 *addr = test_data;
0057 } else {
0058 *addr = NULL;
0059 }
0060 return 0;
0061 }
0062
0063 static const rtems_filesystem_file_handlers_r node_handlers = {
0064 .open_h = rtems_filesystem_default_open,
0065 .close_h = rtems_filesystem_default_close,
0066 .read_h = rtems_filesystem_default_read,
0067 .write_h = rtems_filesystem_default_write,
0068 .ioctl_h = rtems_filesystem_default_ioctl,
0069 .lseek_h = rtems_filesystem_default_lseek,
0070 .fstat_h = handler_fstat,
0071 .ftruncate_h = rtems_filesystem_default_ftruncate,
0072 .fsync_h = rtems_filesystem_default_fsync_or_fdatasync,
0073 .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync,
0074 .fcntl_h = rtems_filesystem_default_fcntl,
0075 .poll_h = rtems_filesystem_default_poll,
0076 .kqfilter_h = rtems_filesystem_default_kqfilter,
0077 .mmap_h = handler_mmap,
0078 .readv_h = rtems_filesystem_default_readv,
0079 .writev_h = rtems_filesystem_default_writev
0080 };
0081
0082 const IMFS_node_control node_control = IMFS_GENERIC_INITIALIZER(
0083 &node_handlers,
0084 IMFS_node_initialize_default,
0085 IMFS_node_destroy_default
0086 );