From e3cbdca98143bfccdac47f077abed1bcf4fbd7ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20K=C3=BChndel?= Date: Thu, 13 Oct 2022 17:41:33 +0200 Subject: TFTPFS: Adding missing diagram --- filesystem/trivial_ftp.rst | 8 ++++++-- images/filesystem/tftpfs_usage.png | Bin 0 -> 47217 bytes images/filesystem/tftpfs_usage.puml | 37 ++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 images/filesystem/tftpfs_usage.png create mode 100644 images/filesystem/tftpfs_usage.puml 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 -- cgit v1.2.3