Commit Graph

56 Commits

Author SHA1 Message Date
Sebastian Huber
a2f91f6cb8 tftp: Use proper semaphore attr for mutex
Close #2729.
2016-06-06 12:57:07 +02:00
Sebastian Huber
f97536dcd3 basdefs.h: Add and use RTEMS_UNUSED 2015-10-26 09:13:19 +01:00
Michael Davidsaver
74ef2c101a tftpDriver: close() false error
closes #2376.
2015-07-29 10:56:14 -05:00
Sebastian Huber
eb7753437f Filesystem: Delete unused fsmountme_h handler 2015-02-09 15:38:48 +01:00
Sebastian Huber
c625a64121 Filesystem: Delete node type operation
Use the fstat handler instead.
2015-01-22 07:52:40 +01:00
Sebastian Huber
56bea4339f Filesystem: Use default kqfilter and poll handler 2013-12-20 10:31:53 +01:00
Sebastian Huber
2f68778f08 Filesystem: Add readv/writev handlers
The readv() and writev() support was implemented in terms of multiple
calls to the read and write handlers.  This imposes a problem on device
files which use an IO vector as single request entity.  For example a
low-level network device (e.g. BPF(4)) may use an IO vector to create
one frame from multiple protocol layers each with its own IO vector
entry.
2013-12-20 10:31:53 +01:00
Sebastian Huber
da154e14f6 Filesystem: Move operations to mount table entry
The scope of the file system operations is the file system instance.
The scope of the file system node handlers is the file location.  The
benefit of moving the operations to the mount table entry is a size
reduction of the file location (rtems_filesystem_location_info_t).  The
code size is slightly increased due to additional load instructions.

Restructure rtems_filesystem_mount_table_entry_t to improve cache
efficiency.
2012-05-15 10:01:43 +02:00
Joel Sherrill
9b4422a251 Remove All CVS Id Strings Possible Using a Script
Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines
  next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
  contain CVS Ids
+ If the processing left a blank line at the top of
  a file, it was removed.
2012-05-11 08:44:13 -05:00
Sebastian Huber
2563410019 Filesystem: Rename defines
o Removed RTEMS_LIBIO_PERMS_SEARCH.
 o Renamed RTEMS_LIBIO_PERMS_READ in RTEMS_FS_PERMS_READ.
 o Renamed RTEMS_LIBIO_PERMS_WRITE in RTEMS_FS_PERMS_WRITE.
 o Renamed RTEMS_LIBIO_PERMS_EXEC in RTEMS_FS_PERMS_EXEC.
 o Renamed RTEMS_LIBIO_FOLLOW_HARD_LINK in RTEMS_FS_FOLLOW_HARD_LINK.
 o Renamed RTEMS_LIBIO_FOLLOW_SYM_LINK in RTEMS_FS_FOLLOW_SYM_LINK.
 o Renamed RTEMS_LIBIO_MAKE in RTEMS_FS_MAKE.
 o Renamed RTEMS_LIBIO_EXCLUSIVE in RTEMS_FS_EXCLUSIVE.
 o Renamed RTEMS_LIBIO_ACCEPT_RESIDUAL_DELIMITERS in
   RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS.
 o Renamed RTEMS_LIBIO_REJECT_TERMINAL_DOT in
 RTEMS_FS_REJECT_TERMINAL_DOT.
2012-03-13 12:24:10 +01:00
Sebastian Huber
4116fce629 Filesystem: New defaults fsync_h and fdatasync_h
New defaults rtems_filesystem_default_fsync_or_fdatasync() and
rtems_filesystem_default_fsync_or_fdatasync_success() for fsync_h and
fdatasync_h.  The rtems_filesystem_default_fsync_or_fdatasync() sets now
errno to EINVAL according to POSIX.
2012-03-13 12:23:45 +01:00
Sebastian Huber
3b7c123c8d Filesystem: Reference counting for locations
o A new data structure rtems_filesystem_global_location_t was
   introduced to be used for
    o the mount point location in the mount table entry,
    o the file system root location in the mount table entry,
    o the root directory location in the user environment, and
    o the current directory location in the user environment.
   During the path evaluation global start locations are obtained to
   ensure that the current file system instance will be not unmounted in
   the meantime.
 o The user environment uses now reference counting and is protected
   from concurrent access.
 o The path evaluation process was completely rewritten and simplified.
   The IMFS, RFS, NFS, and DOSFS use now a generic path evaluation
   method.  Recursive calls in the path evaluation have been replaced
   with iteration to avoid stack overflows.  Only the evaluation of
   symbolic links is recursive.  No dynamic memory allocations and
   intermediate buffers are used in the high level path evaluation.  No
   global locks are held during the file system instance specific path
   evaluation process.
 o Recursive symbolic link evaluation is now limited by
   RTEMS_FILESYSTEM_SYMLOOP_MAX.  Applications can retrieve this value
   via sysconf().
 o The device file system (devFS) uses now no global variables and
   allocation from the workspace.  Node names are allocated from the
   heap.
 o The upper layer lseek() performs now some parameter checks.
 o The upper layer ftruncate() performs now some parameter checks.
 o unmask() is now restricted to the RWX flags and protected from
   concurrent access.
 o The fchmod_h and rmnod_h file system node handlers are now a file
   system operation.
 o The unlink_h operation has been removed.  All nodes are now destroyed
   with the rmnod_h operation.
 o New lock_h, unlock_h, clonenod_h, and are_nodes_equal_h file system
   operations.
 o The path evaluation and file system operations are now protected by
   per file system instance lock and unlock operations.
 o Fix and test file descriptor duplicate in fcntl().
 o New test fstests/fsnofs01.
2012-03-13 12:23:37 +01:00
Sebastian Huber
f14327a24d Fixed incorrect error path
The inet_aton() function returns non-zero in case of success.
2012-02-15 10:02:50 +01:00
Sebastian Huber
1052242d23 Removed fpathconf file system node handler.
There existed no calling function for this handler.
2012-02-02 15:55:33 +01:00
Ralf Corsepius
984c4c492f 2011-11-06 Ralf Corsépius <ralf.corsepius@rtems.org>
PR1945/cpukit
	* libfs/src/nfsclient/src/nfs.c, libfs/src/rfs/rtems-rfs-rtems-dev.c,
	libfs/src/rfs/rtems-rfs-rtems-dir.c,
	libfs/src/rfs/rtems-rfs-rtems-file.c, libnetworking/lib/ftpfs.c,
	libnetworking/lib/tftpDriver.c: Replace rtems_off64_t with off_t.
2011-11-06 12:00:04 +00:00
Sebastian Huber
9f816ad4dc 2011-07-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libnetworking/rtems/tftp.h, libnetworking/lib/tftpDriver.c: Fixed
	prototype.
2011-07-07 06:55:48 +00:00
Sebastian Huber
de39b5127d 2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/libio_.h: Removed rtems_filesystem_null_handlers.
	* libcsupport/src/fs_null_handlers.c: Removed file.
	* libcsupport/Makefile.am: Reflect change above.
	* libfs/src/nfsclient/src/nfs.c, libfs/src/imfs/imfs_creat.c,
	libfs/src/imfs/imfs_init.c, libfs/src/imfs/miniimfs_init.c: Use
	rtems_filesystem_handlers_default instead of
	rtems_filesystem_null_handlers.
	* libnetworking/lib/ftpfs.c, libnetworking/lib/tftpDriver.c:
	Initialize handler and operations table with proper defaults.
2010-07-15 08:46:06 +00:00
Sebastian Huber
55c3939bbb 2010-06-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libnetworking/lib/tftpDriver.c: rtems_tftp_ops and
	rtems_tftp_handlers are now const and static.
	* libnetworking/rtems/tftp.h: Removed
	rtems_bsdnet_initialize_tftp_filesystem and rtems_tftp_ops.
2010-06-29 13:03:31 +00:00
Chris Johns
29e92b090c 2010-05-31 Chris Johns <chrisj@rtems.org>
* libcsupport/Makefile.am: Add mount-mgr.c.
        * libcsupport/src/mount-mgr.c: New.
        * include/rtems/fs.h: Added rtems_filesystem_location_mount.
        * libcsupport/include/rtems/libio.h, libcsupport/src/mount.c: New
        mount interface. It is similar to Linux.
        * libcsupport/include/rtems/libio_.h: Remove the
        init_fs_mount_table call.
        * libcsupport/src/base_fs.c: Remove init_fs_mount_table_call. Use
        the new mount call. Remove setting the root node in the global
        pathloc. Mount does this now.
        * libcsupport/src/privateenv.c: Remove the hack to set the root
        mount table entry in the environment.
        * libcsupport/src/unmount.cL Free the target string.
        * libblock/src/bdpart-mount.c: New mount API.

        * libfs/src/devfs/devfs.h, libfs/src/devfs/devfs_init.c,
        libfs/src/dosfs/dosfs.h, libfs/src/dosfs/msdos.h,
        libfs/src/dosfs/msdos_init.c, libfs/src/imfs/imfs.h,
        libfs/src/imfs/imfs_eval.c, libfs/src/imfs/imfs_init.c,
        libfs/src/imfs/miniimfs_init.c,
        libfs/src/nfsclient/src/librtemsNfs.h,
        libfs/src/rfs/rtems-rfs-rtems.c, libfs/src/rfs/rtems-rfs.h,
        libnetworking/lib/ftpfs.c, libnetworking/rtems/ftpfs.h,
        libnetworking/rtems/tftp.h: New mount_h API.

        * libfs/src/devfs/devfs_eval.c: Local include of extern ops.
        * libfs/src/nfsclient/src/nfs.c: New mount API. Removed the mount
        me call and fixed the initialisation to happen when mounting.

        * libmisc/Makefile.am, libmisc/shell/shellconfig.h: Remove mount
        filesystem files.

        * libmisc/fsmount/fsmount.c, libmisc/fsmount/fsmount.h: Updated to
        the new mount table values.

        * libmisc/shell/main_mount_ftp.c,
        libmisc/shell/main_mount_msdos.c, libmisc/shell/main_mount_rfs.c,
        libmisc/shell/main_mount_tftp.c: Removed.

        * libmisc/shell/main_mount.c: Use the new mount API. Also access
        the file system table for the file system types.

        * libnetworking/lib/tftpDriver.c: Updated to the new mount
        API. Fixed to allow mounting from any mount point. Also can now
        have more than file system mounted.

        * sapi/include/confdefs.h: Add file system configuration support.
2010-05-31 13:56:37 +00:00
Ralf Corsepius
4665f32fc5 2010-05-27 Ralf Corsépius <ralf.corsepius@rtems.org>
*  libnetworking/lib/ftpfs.c, libnetworking/lib/tftpDriver.c:
	Use size_t instead of int for pathnamelen.
2010-05-27 16:36:02 +00:00
Ralf Corsepius
b25b88e732 Add HAVE_CONFIG_H support to let files receive configure defines. 2010-03-28 05:50:29 +00:00
Joel Sherrill
27643e0336 2009-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* libcsupport/src/termios.c, libfs/src/dosfs/msdos_format.c,
	libfs/src/nfsclient/src/nfs.c, libfs/src/pipe/fifo.c,
	libnetworking/lib/rtems_bsdnet_ntp.c, libnetworking/lib/tftpDriver.c,
	libnetworking/rtems/rtems_glue.c, libnetworking/rtems/rtems_select.c:
	Eliminate uses of deprecated rtems_clock_get() and replace with
	properly typed routine.
2009-12-17 20:26:09 +00:00
Ralf Corsepius
1de949a8bd Whitespace removal. 2009-11-30 15:49:52 +00:00
Ralf Corsepius
00d10d55a3 2009-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/lib/tftpDriver.c: Remove vim: meta-tags.
2009-09-29 07:18:28 +00:00
Ralf Corsepius
cfc2620c6d 2009-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/lib/tftpDriver.c (rtems_tftp_eval_path):
	Add missing parameter pathlen.
2009-09-29 04:24:22 +00:00
Chris Johns
07d6fd513f 2009-04-29 Chris Johns <chrisj@rtems.org>
* libcsupport/include/rtems/libio.h: Add rtems_off64_t for
        internal use. Update the internal off_t to the 64bit offset.

        * libnetworking/lib/ftpfs.c, libnetworking/lib/tftpDriver.c,
        libfs/src/nfsclient/src/nfs.c, libfs/src/imfs/imfs_fifo.c,
        libfs/src/imfs/memfile.c, libfs/src/imfs/imfs_directory.c,
        libfs/src/imfs/imfs.h, libfs/src/imfs/deviceio.c: Change off_t to
        rtems_off64_t.

        * libmisc/shell/main_msdosfmt.c: Add an info level so the format
        code can tell the user what is happening. Add more options to
        control the format configuration.

        * libfs/src/dosfs/msdos_format.c: Add a print function to display
        the format progress and print statements. Select a better default
        cluster size depending on the size of the disk. This lowers the
        size of the FAT on large disks. Read and maintain the MRB
        partition information.

        * libfs/src/dosfs/dosfs.h, libfs/src/dosfs/fat.h,
        libfs/src/dosfs/fat_file.c, libfs/src/dosfs/fat_file.h,
        libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_conv.c,
        libfs/src/dosfs/msdos_create.c, libfs/src/dosfs/msdos_file.c,
        libfs/src/dosfs/msdos_handlers_dir.c,
        libfs/src/dosfs/msdos_handlers_file.c,
        libfs/src/dosfs/msdos_init.c, libfs/src/dosfs/msdos_initsupp.c,
        libfs/src/dosfs/msdos_misc.c, libfs/src/dosfs/msdos_mknod.c: Add
        long file name support. Change off_t to rtems_off64_t.
2009-04-29 08:31:27 +00:00
Ralf Corsepius
722bdd8f8c Add __attribute__((unused)) to unused function args. 2009-01-03 08:31:25 +00:00
Ralf Corsepius
0b8706452a Use INADDR_ANY/INADDR_BROADCAST. 2009-01-03 08:28:02 +00:00
Ralf Corsepius
b5cc0592f7 Add prototypes. 2008-08-03 04:27:50 +00:00
Ralf Corsepius
7192476f7a Use size_t instead of uint32_t for read/write count-args. 2006-12-08 07:18:27 +00:00
Joel Sherrill
300c914c64 *** empty log message *** 2006-09-01 18:15:01 +00:00
Ralf Corsepius
1ed739c0a0 socklen_t. 2005-05-09 12:41:28 +00:00
Ralf Corsepius
d8dbdc02cf 2004-03-29 Ralf Corsepius <ralf_corsepius@rtems.org>
* libnetworking/lib/ftpfs.c, libnetworking/lib/rtems_bsdnet_ntp.c,
	libnetworking/lib/tftpDriver.c, libnetworking/machine/endian.h,
	libnetworking/net/if_ppp.c, libnetworking/rtems/rtems_bsdnet.h,
	libnetworking/rtems/rtems_bsdnet_internal.h,
	libnetworking/rtems/rtems_glue.c,
	libnetworking/rtems/rtems_syscall.c: Convert to using c99 fixed size
	types.
2004-03-29 22:11:51 +00:00
Joel Sherrill
cb2f32039d 2004-03-05 Joel Sherrill <joel@OARcorp.com>
* libblock/src/bdbuf.c, libblock/src/ramdisk.c,
	libcsupport/src/newlibc.c, libcsupport/src/sync.c,
	libmisc/cpuuse/cpuuse.c, libmisc/monitor/mon-symbols.c,
	libmisc/shell/cmds.c, libmisc/shell/shell.c,
	libnetworking/kern/kern_sysctl.c, libnetworking/lib/ftpfs.c,
	libnetworking/lib/tftpDriver.c, libnetworking/libc/gethostbydns.c,
	libnetworking/libc/gethostbyht.c, libnetworking/libc/gethostnamadr.c,
	libnetworking/libc/getnetbyht.c, libnetworking/libc/getnetnamadr.c,
	libnetworking/libc/inet_addr.c, libnetworking/libc/linkaddr.c,
	libnetworking/libc/map_v4v6.c, libnetworking/libc/ns_print.c,
	libnetworking/libc/ns_ttl.c, libnetworking/libc/nsap_addr.c,
	libnetworking/libc/rcmd.c, libnetworking/libc/res_debug.c,
	libnetworking/libc/res_mkupdate.c, libnetworking/libc/res_query.c,
	libnetworking/libc/res_send.c, libnetworking/libc/res_update.c,
	libnetworking/net/radix.c, libnetworking/rtems/mkrootfs.c,
	librpc/src/rpc/clnt_perror.c, librpc/src/rpc/svc.c,
	score/macros/rtems/score/chain.inl, score/src/objectidtoname.c: Too
	much was accidentally committed -- revert.
2004-03-05 18:02:41 +00:00
Joel Sherrill
b2b143f402 2004-03-05 Joel Sherrill <joel@OARcorp.com>
* libblock/src/bdbuf.c, libblock/src/ramdisk.c,
	libcsupport/src/newlibc.c, libcsupport/src/sync.c,
	libmisc/cpuuse/cpuuse.c, libmisc/monitor/mon-symbols.c,
	libmisc/shell/cmds.c, libmisc/shell/shell.c,
	libnetworking/kern/kern_sysctl.c, libnetworking/lib/ftpfs.c,
	libnetworking/lib/tftpDriver.c, libnetworking/libc/gethostbydns.c,
	libnetworking/libc/gethostbyht.c, libnetworking/libc/gethostnamadr.c,
	libnetworking/libc/getnetbyht.c, libnetworking/libc/getnetnamadr.c,
	libnetworking/libc/inet_addr.c, libnetworking/libc/linkaddr.c,
	libnetworking/libc/map_v4v6.c, libnetworking/libc/ns_print.c,
	libnetworking/libc/ns_ttl.c, libnetworking/libc/nsap_addr.c,
	libnetworking/libc/rcmd.c, libnetworking/libc/res_debug.c,
	libnetworking/libc/res_mkupdate.c, libnetworking/libc/res_query.c,
	libnetworking/libc/res_send.c, libnetworking/libc/res_update.c,
	libnetworking/net/radix.c, libnetworking/rtems/mkrootfs.c,
	librpc/src/rpc/clnt_perror.c, librpc/src/rpc/rtems_rpc.c,
	librpc/src/rpc/svc.c, sapi/include/confdefs.h,
	score/macros/rtems/score/chain.inl, score/src/objectidtoname.c:
2004-03-05 17:58:51 +00:00
Joel Sherrill
abef0f69ae 2002-10-28 Joel Sherrill <joel@OARcorp.com>
* Pass to eliminate warnings.
	* kern/uipc_mbuf.c: Conditional SYSINIT() usage on __rtems__.
	Fix return statement without a value.
	* lib/ftpfs.c: read and write filesystem routines return ssize_t.
	* lib/syslog.c: Add include of <string.h> to eliminate warning.
	* lib/tftpDriver.c: read and write filesystem routines return ssize_t.
	* libc/gethostbydns.c: Prototype abort().
	* libc/inet_ntoa.c: Prototype strcpy().
	* libc/rcmd.c: Add include of <sys/select.h>
	* net/if_loop.c: Turn token at end of endif to comment.
	* net/rtsock.c, nfs/bootp_subr.c:  Conditional SYSINIT() usage
	on __rtems__.
	* rtems/rtems_bootp.c: Add include of <rtems/rtems_bsdnet_internal.h>.
	* rtems/rtems_bsdnet_internal.h: Added prototypes for memcpy() and
	memset() since the BSD code tries to avoid using libc .h files
	since it is used to being in the kernel.
	* rtems/rtems_syscall.c: read and write filesystem routines
	return ssize_t.
2002-10-28 13:56:01 +00:00
Joel Sherrill
cf42e73556 2001-01-16 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.clib/tftpDriver.c: Fix TFTP block number checking.
2002-01-16 22:50:04 +00:00
Joel Sherrill
d4651e4104 2002-02-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* lib/tftpDriver.c: Remove set_errno_and_return_minus_one, include
	<rtems/seterr.h>.
2002-01-04 18:25:27 +00:00
Joel Sherrill
2539cdcd28 2001-12-18 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Allow chdir() to work on TFTP `directories'
	(path names with a / at the end) while disallowing open() operations
	on TFTP `directories'.
2001-12-19 18:11:07 +00:00
Joel Sherrill
86d9ca28ed 2001-12-07 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Restore write capability.
2001-12-07 12:59:12 +00:00
Joel Sherrill
dfe5a4e353 2001-10-18 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Properly handles ../ components in chdir() and
	open() operations within the TFTP file system.
2001-10-18 18:48:55 +00:00
Joel Sherrill
1ef8e3d448 2001-09-27 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Add limited chdir() support to the TFTP
	filesystem.
2001-09-27 13:31:56 +00:00
Joel Sherrill
5400f070e6 2001-09-19 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Add some debugging capability.
2001-09-19 17:40:37 +00:00
Joel Sherrill
809feccc93 2001-01-25 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Reduce first timeout interval.  This
	improves throughput on systems which are dropping packets.
	Only the first timeout is reduced.  This keeps the number
	of extra packets down on networks that are very busy and
	dropping lots of packets.
2001-01-25 22:59:32 +00:00
Joel Sherrill
407bc8c9ee 2000-12-14 Eric Norum <eric.norum@usask.ca>
* lib/tftpDriver.c: Added write capability.
2000-12-14 14:12:19 +00:00
Joel Sherrill
0da0dea224 2000-10-19 Antti P Miettinen <anmietti@trshp.ntc.nokia.com>
* lib/tftpDriver.c: add comments to handlers struct function pointers.
	* rtems/rtems_glue.c: move pointer arithmetic to be _after_
	pointer has been checked against NULL.
2000-10-19 15:33:03 +00:00
Joel Sherrill
809f445197 Correction from Eric Norum for timeout in TFTP driver following bug
report by Nick.SIMON@syntegra.bt.co.uk:

TFTP uses UDP and UDP packets are prime targets for getting dropped when
the network gets busy.  I want the number of retries quite large in my
application. I see that PACKET_REPLY_MILLISECONDS is, in fact, not
being used.
1999-12-13 17:03:37 +00:00
Joel Sherrill
017061c561 Patch from Eric Norum <eric@cls.usask.ca> to fix a spot in the tftp file
system table from when the rtems_filesystem_operations_table structure changed
and the initializer in libnetworking/lib/tftpDriver.c did not get
updated.
1999-12-01 15:54:17 +00:00
Joel Sherrill
48abdc31fd Patch from Eric Norum <eric@cls.usask.ca> to readd the behavior where
the minor number indicated the port number to try.
1999-08-23 14:58:16 +00:00
Joel Sherrill
09ea257c58 Patch from Eric Norum <eric@cls.usask.ca>:
I get the following warning when compiling the latest snapshot.  I had
a quick look at the source -- it certainly looks to me like this is a
real bug.

../../../../src/rtems-19990709/c/src/lib/libc/mount.c:97: warning:
`options' might be used uninitialized in this function

Also, I changed the TFTP test program and TFTP driver to reflect the
changes in the way paths are passed to the TFTP driver.  The TFTP driver
now needs a proper `dotted-decimal' hostname as the second component of
the path name.
1999-07-12 15:52:35 +00:00