{"id":47948834,"url":"https://github.com/slaclab/t9p","last_synced_at":"2026-04-04T08:55:10.253Z","repository":{"id":303892432,"uuid":"1007383978","full_name":"slaclab/t9p","owner":"slaclab","description":"A lightweight 9P2000.L client for RTEMS and Linux","archived":false,"fork":false,"pushed_at":"2026-01-05T18:45:06.000Z","size":657,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T08:55:06.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slaclab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-23T23:07:16.000Z","updated_at":"2026-01-05T18:45:07.000Z","dependencies_parsed_at":"2025-07-10T10:08:02.468Z","dependency_job_id":"2709d8e3-2bc9-4b32-b226-2a26e34e9a3d","html_url":"https://github.com/slaclab/t9p","commit_stats":null,"previous_names":["slaclab/t9p"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/slaclab/t9p","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Ft9p","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Ft9p/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Ft9p/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Ft9p/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slaclab","download_url":"https://codeload.github.com/slaclab/t9p/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Ft9p/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31393781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-04T08:55:09.651Z","updated_at":"2026-04-04T08:55:10.231Z","avatar_url":"https://github.com/slaclab.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# t9p\n\nt9p is a relatively small (originally tiny) 9p2000.L client supporting RTEMS and Linux.\nThis client was designed with older RTEMS systems in mind (single core, \u003c=512M memory, PowerPC or m68k).\n\nt9p has been tested on the following platforms:\n- Linux x86\\_64\n- mvme6100 (PowerPC G4, 512MB memory) RTEMS 4.10.2\n- mvme3100 (PowerPC e500, 256MB memory) RTEMS 4.10.2\n- uC5282 (Coldfire [m68k] V2, 16MB memory) RTEMS 4.10.2\n- pc686 (i386 in Qemu) RTEMS 4.10.2\n\n## Building\n\nA C99 compliant compiler and CMake are required.\n\n### Integrating with Other Projects\n\nt9p's source files require no special compiler flags to build, so they can be trivially included in other projects.\n\nPlatform specific source files will need to be excluded manually (i.e. do not build `t9p_rtems.c` if you are targeting Linux).\n\n### Configuring\n\nA makefile is provided that can automatically configure for all targets. This is particularly handy when cross compiling for\nmultiple targets.\n```sh\nmake -f Makefile.conf configure\n```\n\nIf the `RTEMS_TOP` environment variable is set to the top of your RTEMS 6+ install, Makefile.conf will automatically determine the available targets\nand configure for those.\n\nThe build files will be generated into the `build-cmake` directory. This directory is safe to delete.\n\n### Building All\n\n\nThe makefile can also build all targets:\n```sh\nmake -f Makefile.conf build\n```\n\n### Configuring Manually\n\n\n#### Linux\n\n```sh\ncmake . -Bbuild\nmake -C build -j$(nproc)\n```\n\nAlternatively, you can use Makefile.conf (this will configure for all available targets):\n```sh\nmake -f Makefile.conf configure\n```\n\nMakefile.conf will generate `build-cmake/build-linux-x86_64` for Linux.\n\n#### RTEMS 6\n\nExample shown is RTEMS6-pc686-qemu target.\n```sh\ncmake . -Bbuild-cmake/build-rtems6-pc686-qemu -DCMAKE_TOOLCHAIN_FILE=rtems-tools/toolchains/rtems6-pc686-qemu.cmake -DRTEMS_TOP=$HOME/dev/rtems/6.0\nmake -C build-cmake/build-rtems6-pc686-qemu -j$(nproc)\n```\n\nRunning in QEMU is done with this script:\n```sh\n./tests/rtems-test.sh -t rtems6-pc686-qemu\n```\n\nNOTE: you will need qemu-system-i386 to be installed and available in your PATH.\n\n\n#### RTEMS 4\n\n\nConfiguring for RTEMS 4.X is similar:\n```sh\ncmake . -Bbuild-cmake/build-rtems4-pc586 -DCMAKE_TOOLCHAIN_FILE=rtems-tools/toolchains/rtems4-pc586.cmake -DRTEMS_TOP=path/to/your/rtems/4.10.2\nmake -C build-cmake/build-rtems4-pc586\n```\n\nRunning in QEMU can be done by the following script:\n\n```sh\n./tests/rtems-test.sh -t rtems4-pc586\n```\n\nNOTE: you will need qemu-system-i386 to be installed and available in your PATH.\n\n## Target Environment\n\nThis client has been tested on the following targets:\n- linux-x86_64\n- linux-powerpc (testing only)\n- RTEMS4/6-mvme3100 (PowerPC, soft FP)\n- RTEMS4/6-mvme6100 (PowerPC, hard FP, altivec)\n- RTEMS4/6-uC5282 (m68k, Coldfire ISA-A)\n\nWe will also need to test the client on:\n- RTEMS4-svgm (PowerPC, soft FP [for VGM-1D] and hard+altivec [for VGM5])\n\nCompilers:\n- GCC 4.8.5 (RTEMS 4)\n- GCC 13.2.0 (RTEMS 6)\n- whatever else you are building with on host system\n\n## Testing\n\n### Targets\n\n- Host system (linux-x86_64)\n- qemu-powerpc-static (user-space Linux PowerPC emulation)\n- rtems4-pc586 (QEMU)\n- rtems6-pc686-qemu (QEMU)\n- Actual hardware (mvme-3100, 6100, uC5282, svgm)\n\n### Test Applications\n\n- t9p_cmd: interactive cli for interacting with 9p\n- t9p_threaded_test: threaded validation and performance testing\n- t9p_rtems_test: Combines an automated test with t9p_cmd on RTEMS target\n\n### Running Tests\n\n1. Run ./tests/mktree.sh to create a test file system tree\n2. Run ./tests/diod.sh in a new terminal\n3. Run ./tests/t9p.sh, t9p-threaded.sh or rtems-test.sh\n\n### Testing on Hardware\n\nIntegrated ssrlApps/GeSys build at: /sdf/group/cds/sw/epics/users/lorelli/rtems/4.10.2/src/ssrlApps\n\nSet your nvram config to point at this image:\n- mvme3100: /sdf/group/cds/sw/epics/users/lorelli/rtems/4.10.2/target/rtems_p5/ssrlApps_p4/powerpc-rtems/mvme3100/bin/rtems.ralf\n- mvme6100: /sdf/group/cds/sw/epics/users/lorelli/rtems/4.10.2/target/rtems_p5/ssrlApps_p4/powerpc-rtems/beatnik/bin/rtems.ralf\n- uC5282: TODO\n\nt9p.obj gets loaded automatically on boot.\n\nMounting example:\n```\np9Mount(\"16626.2211@134.79.217.70\", \"/scratch/lorelli/dummy-diod-fs\", \"/test\")\n```\nMust be mounted with correct uid/gid. IP required right now, that needs fixing.\n\n## Development Guidelines\n\n- Use C99, plus GNU extensions (but don't do anything crazy with the GNU extensions)\n- Generally follow the formatting guidelines\n- Leave plenty of comments\n- Validate your changes with manual testing before committing them\n- Open issues for bugs+improvements\n\n## Supported Calls\n\n| Call | Implemented? | Notes |\n|---|---|---|\n| version       | Y |   |\n| flush         |   |   |\n| walk          | Y |   |\n| read          | Y |   |\n| write         | Y |   |\n| clunk         | Y |   |\n| remove        | Y |   |\n| attach        | Y |   |\n| auth          |   |   |\n| statfs        | Y |   |\n| lopen         | Y |   |\n| lcreate       | Y |   |\n| symlink       | Y |   |\n| mknod         | Y |   |\n| rename        | Y |   |\n| readlink      | Y |   |\n| getattr       | Y |   |\n| setattr       | Y | trunc, chmod, chown, etc. wrappers too  |\n| xattrwalk     |   |   |\n| xattrcreate   |   |   |\n| readdir       | Y |   |\n| fsync         | Y |   |\n| lock          |   |   |\n| getlock       |   |   |\n| link          | Y |   |\n| mkdir         | Y |   |\n| renameat      | Y |   |\n| unlinkat      | Y |   |\n\nThe xattr calls are likely not going to be implemented, as they are not needed for the primary use-case of this client.\n\nImplementation percentage: 22/28 (78%)\n\n## Copyright Notice:\n            \nCOPYRIGHT © SLAC National Accelerator Laboratory. All rights reserved. \nThis work is supported [in part] by the U.S. Department of Energy, Office of Basic Energy Sciences under contract DE-AC02-76SF00515.\n\n## Usage Restrictions:\n\nNeither the name of the Leland Stanford Junior University, SLAC National Accelerator Laboratory, U.S. Department of Energy \nnor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaclab%2Ft9p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslaclab%2Ft9p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaclab%2Ft9p/lists"}