diff --git a/filesystem/trivial_ftp.rst b/filesystem/trivial_ftp.rst index 3ef8bba..b8e1ae4 100644 --- a/filesystem/trivial_ftp.rst +++ b/filesystem/trivial_ftp.rst @@ -275,16 +275,20 @@ repository): Usage ===== -The following diagram shows how the TFTP filesystem is used by an +The following diagram usage_ shows how the TFTP filesystem is used by an application. The mount point can be any directory. The name ``/tftp`` used in the figure serves only as an example. The final unmounting and remove directory steps are optional. +.. _usage: + .. figure:: ../images/filesystem/tftpfs_usage.png - :width: 90% + :width: 75% :align: center :alt: TFTP Usage Diagram + TFTP file system usage + Mounting the TFTP Filesystem ---------------------------- diff --git a/images/filesystem/tftpfs_usage.png b/images/filesystem/tftpfs_usage.png new file mode 100644 index 0000000..5faa72f Binary files /dev/null and b/images/filesystem/tftpfs_usage.png differ diff --git a/images/filesystem/tftpfs_usage.puml b/images/filesystem/tftpfs_usage.puml new file mode 100644 index 0000000..ebd449c --- /dev/null +++ b/images/filesystem/tftpfs_usage.puml @@ -0,0 +1,37 @@ +' +' TFTP file system : usage +' +' Copyright (c) 2022 Frank Kuehndel +' All rights reserved. +' +@startuml +:Initialize libbsd; +:Initialize Networking; +:const char *mount_point = "/tftp" +result = mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO ); +:result = mount( + "", + mount_point, + RTEMS_FILESYSTEM_TYPE_TFTPFS, + RTEMS_FILESYSTEM_READ_WRITE, + "blocksize=1024,windowsize=4,verbose" + ); +repeat + if () then + :fd = open( path, O_RDONLY ); + repeat + :bytes = read( fd, data_buffer, + sizeof( data_buffer ) ); + repeat while () + :result = close( fd ); + else + :fd = open( path, O_WRONLY ); + repeat + :bytes = write( fd, data, size ); + repeat while () + :result = close( fd ); + endif +repeat while () +:result = unmount( mount_point ); +:result = rmdir( mount_point ); +@enduml