ARINC 653p2 File System On CFFS
Description
This project's reason for existence is to develop an ARINC 653 Part 2 compliant file system that takes advantage of our existing Certifiable Fast File System (CFFS) component.
The proposed implementation consists of a Deos shared library implementing the specification's majority of requirements. Envisioned are some changes to the baseline CFFS server and API portions to support this new shared library. Along with this we may need some host tooling to assist with transformations between ARINC 653 and CFFS compliant configuration files.
Status
This project is in the estimation phase, serving at this time to help quantify various Statements-Of-Work.
Estimates
653P2 File System
| Feature | Estimate (Man Hours) |
|---|---|
| OPEN_NEW_FILE | 40 |
| OPEN_FILE | 40 |
| CLOSE_FILE | 40 |
| READ_FILE | 40 |
| WRITE_FILE | 40 |
| SEEK_FILE | 40 |
| REMOVE_FILE | 40 |
| RENAME_FILE | 40 |
| GET_FILE_STATUS | 40 |
| GET_VOLUME_STATUS | 40 |
| RESIZE_FILE | 40 |
| SYNC_FILE | 40 |
| OPEN_DIRECTORY | 40 |
| CLOSE_DIRECTORY | 40 |
| READ_DIRECTORY | 40 |
| REWIND_DIRECTORY | 40 |
| MAKE_DIRECTORY | 40 |
| REMOVE_DIRECTORY | 40 |
Total: 720
CFFS Changes
| Feature | Estimate (Man Hours) |
|---|---|
| Directories | 160 |
| runtime read-only media detection | 40 |
| Misc changes to support 653P2 queries, e.g. GET_VOLUME_STATUS | 80 |
| Misc changes to support additional 653P2 configuration options, e.g. MaxNumberOfOpenFiles | 80 |
Total: 360
Tool Changes
| Feature | Estimate (Man Hours) |
|---|---|
| 653P2 config to CFFS config translator | 160 |
Total: 160
Totals
Total Estimate = (720 + 360 + 160) = 1240
With Verification = (3 * 1240) = 3720
With Fudge Factor = (2.7 * 3720) = 10044
Notes
- Estimates do not include any MAL activities.
- While it is likely some APIs will take less or more time than others, we've averaged all out to the same estimated effort. This is to account for inter-API efforts such as data structure discovery, code factoring, etc.
- Despite the constraints implied by its name, this shared library could likely be used within a native Deos application.
- Not all FILE_STATUS_TYPE fields can be supported as not all media types provide the required information, e.g. NB_OF_WRITE_ERRORS.
- This API really hinders our ability to out innovate our competitors. To wit from the READ_FILE service: "initiate and complete copy of OUT_LENGTH bytes from file and position described by FILE_ID to memory starting at MESSAGE_ADDR." That's right. The specification demands one copy memory, - a time sucking operation. The current CFFS allows reading clients access to their data without needing to copy it first. Perhaps we could provide a companion READ_FILE_BUT_BETTER API alongside?
- SYNC_FILE will likely be mapped to a journal flush.