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: [PATCH] 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 0000000000000000000000000000000000000000..5faa72f7222268a0742c50f32fa30380a3be33e7 GIT binary patch literal 47217 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 literal 0 HcmV?d00001 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