{"id":19608681,"url":"https://github.com/sel4/sel4runtime","last_synced_at":"2025-04-27T20:33:01.439Z","repository":{"id":45913990,"uuid":"179597447","full_name":"seL4/sel4runtime","owner":"seL4","description":"A minimal runtime for seL4 applications. ","archived":false,"fork":false,"pushed_at":"2025-03-17T00:33:30.000Z","size":162,"stargazers_count":13,"open_issues_count":4,"forks_count":29,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-05T03:22:40.313Z","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/seL4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","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}},"created_at":"2019-04-05T00:35:25.000Z","updated_at":"2025-03-17T00:33:33.000Z","dependencies_parsed_at":"2025-03-17T01:27:44.060Z","dependency_job_id":null,"html_url":"https://github.com/seL4/sel4runtime","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seL4%2Fsel4runtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seL4%2Fsel4runtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seL4%2Fsel4runtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seL4%2Fsel4runtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seL4","download_url":"https://codeload.github.com/seL4/sel4runtime/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251204721,"owners_count":21552279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-11T10:16:25.714Z","updated_at":"2025-04-27T20:33:00.971Z","avatar_url":"https://github.com/seL4.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n     Copyright 2019, Data61, CSIRO (ABN 41 687 119 230)\n\n     SPDX-License-Identifier: CC-BY-SA-4.0\n--\u003e\n\n# The seL4 Run-time\n\nThis provides a minimal runtime for running a C or C-compatible process, \ni.e. one with a C-like `main`, in a minimal seL4 environment.\n\nThis runtime provides mechanisms for accessing everything a standard\nprocess would expect to need at start and provides additional utilities\nfor delegating the creation of processes and threads.\n\n## Standard Processes\n\nAll processes (except for the root task) will use the entry-points\nprovided here as normal and require the `_start` entry-point provided in\nthe architecture-dependant `crt0.S`. This will then bootstrap into the\nruntime entry-point `__sel4_start_c` which simply processes the stack to\nfind the argument, environment, and auxiliary vectors.\n\nThe found vectors, along with`main`, are passed into\n`__sel4_start_main` which configures the runtime before starting\n`main`.\n\n## Root Task\n\nThe root task requires an alternate entry-point `_sel4_start` which\nassumes that the `seL4_BootInfo` argument has been passed to it and that\nit has not been given a stack.\n\nThis entry-point moves onto a static 16 kilobyte stack before invoking\n`__sel4_start_root`, which constructs the argument, environment, and\nauxiliary vectors. It then passes the constructed vectors, along with\n`main`, into `__sel4_start_main` which configures the runtime before\nstarting `main`.\n\n## Thread-local storage layout\n\nThere are two standard layouts for thread local storage commonly used.\nOne where the TLS base address refers to the first address in memory of\nthe region and one where it refers to the address that immediately\nfollows the region. Intel's x86_64 and ia32 architectures use the latter\nmethod as it aligns with the segmentation view of memory presented by\nthe processor. Most other platforms use former method, where the TLS can\nbe said to be 'above' the thread pointer.\n\nIn order to store metadata for the current thread in the same memory\nallocation as the TLS, the run-time utilises memory on the other side of\nthe thread pointer for it's thread structure.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsel4%2Fsel4runtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsel4%2Fsel4runtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsel4%2Fsel4runtime/lists"}