
fuchsia
redwingz
这个作者很懒,什么都没留下…
展开
-
Fuchsia编译系统的GN结构
在下载完成fuchsia的代码之后,编译代码之前,需要使用fx set命令指定要编译的目标(product.board)。参见以下的fx set命令的帮助信息。其中的PRODUCT和BOARD参数可由fx的命令list-products和命令list-boards获得,也可通过查看products目录和boards目录下的gni文件看到。--build-dir选项指定build输出目录,不指...原创 2019-06-12 21:38:32 · 2017 阅读 · 0 评论 -
Fuchsia蛋糕分层
Fuchsia是开源工程的名字,也是由开源工程生产的完全技术型产品的名字。名字“Fuchsia”出现在代码库的许多地方,也将出现在提供给第三方开发者的API接口名字中。以下每个单独层级(Zircon除外)的名字是我们开发Fuchsia的实现细节,不应当出现在公开的API中。 |---------| | Topaz | |----...原创 2019-06-18 19:24:58 · 526 阅读 · 0 评论 -
Fuchsia进程创建
内核提供了底层设施以创建和启动进程。但是,由于包含为可执行文件、共享库和栈进行直接映射内存空间的工作,这些设施难以使用。替代的方法,应当使用如下的较高层机制创建进程。fuchsia.process.LauncherFuchsia提供的进程fuchsia.process.Launcher,实现了创立进程所需的底层工作。你只需为此服务提供创建进程所需的内核对象(例如,将在其中创建进程的job...原创 2019-06-18 19:27:20 · 768 阅读 · 0 评论 -
Zircon 内核对象
Zircon是一个基于对象的内核。用户模式代码几乎只通过对象句柄与操作系统资源交互。对象句柄可以被认为是与OS特定子系统的特定资源的活动会话。Zircon管理着如下的资源:processor timememory and address spacesdevice-io memoryinterruptssignaling and waiting应用程序的内核对象IPCChan...原创 2019-06-24 21:14:50 · 2149 阅读 · 0 评论 -
Zircon 与 LK
Zircon作为LK的一个分支产生,甚至现在许多内部结构都基于LK,但是上面的层级是新的。例如,Zircon有进程的概念,但Lk没有。然而,Zircon进程是由LK级的结构组成,如LK的thread_t。LK是为小型系统设计的内核,通常用于嵌入式系统。它是一个很好的商业版的替代品,如商业的FreeRTOS或ThreadX.。这样的系统通常只有非常有限的RAM,一组固定的外围设备,以及一组有限的工...原创 2019-06-27 20:11:00 · 641 阅读 · 0 评论 -
Zircon bootsvc程序
bootsvc是(通常)用户模式加载的第一个程序(相对于由内核加载的userboot。bootsvc提供几种系统服务:包含bootfs内容的文件系统服务(/boot)从bootf获取的加载程序服务在准备好这些服务之后,它从bootfs启动一个程序。这个程序可以使用[内核命令行参数](kernel-cmdline.md)- bootsvc.next指定(当前默认值为bin/devmgr)。...原创 2019-06-27 20:12:04 · 640 阅读 · 0 评论 -
Zircon 通道定义
NAME 命名channel - 双向进程间通信简介通道是一种双向的消息传输,消息由一些字节数据和一些句柄组成。描述通道的两端都维护这一个有序的消息队列。消息由一些数据和一些句柄组成。调用[zx_channel_write()]将一条消息入队,调用[zx_channel_read()]将一条消息出列(如果队列中有的话)。线程可能会阻塞通过[zx_object_wait_one()]等待消...原创 2019-06-27 20:13:22 · 1383 阅读 · 0 评论 -
Zircon 线程Thread
定义thread - 可运行的 / 运算实体描述线程对象是一种表示时间共享的CPU执行上下文的结构。线程对象存在于关联的特定进程对象中,为其它对象提供I/O和计算所必须的内存和句柄。生存期线程是通过调用[zx_thread_create()]创建的,但只有在调用了[zx_thread_start()]或[zx_process_start()]时才开始执行。这两个系统调用将要执行的初始例程...原创 2019-06-27 20:15:10 · 457 阅读 · 0 评论 -
Zircon套接字定义
定义Socket - 双向流式IPC传输总述套接字是双向流传输。区别于通道,套接字只移动数据(不移动句柄)。描述数据通过zx_socket_write()]写入套接字的一端,并且通过[zx_socket_read()]从相反的另一端读取。创建后,套接字的两端都是可写和可读的。通过传入ZX_SOCKET_SHUTDOWN_READ和ZX_SOCKET_SHUTDOWN_WRITE选项参数...原创 2019-06-27 20:16:03 · 310 阅读 · 0 评论 -
Zircon内核到用户空间启动流程(userboot)
Zircon是一种微内核的设计风格。微内核设计的一种复杂性在于如何引导初始的用户空间进程。通常达到这一功能是通过让内核实现以引导为目的的最小版本的文件系统读取和程序加载,这些内核功能可能在引导之后再也不会使用。Zircon采用了不同的方法。文章目录Boot loader 与内核启动BOOTFS内核加载userboot内核发送`processargs`消息userboot在vDSO中查找syste...原创 2019-06-25 21:20:53 · 2661 阅读 · 0 评论 -
Zircon DDK入门指南
入门此文档是Driver Development Kit tutorial文档的一部分。编写设备驱动程序通常被视为一项艰巨的任务,充满了复杂性,并且需要具有对鲜为人知的核心机密的神秘知识。本节的目标是揭开这个过程的神秘面纱;你将学到你所需要知道的关于如何编写设备驱动程序的一切,从它们可以做什么开始,它们如何工作,以及它们如何融入整个系统。概述在最高层次上,设备驱动程序的工作是为特定的设备...原创 2019-06-25 21:19:17 · 1630 阅读 · 0 评论 -
fuchsia代码管理
google官方讲述代码获取的说明文档路径如下:https://fuchsia.googlesource.com/docs/+/ea2fce2874556205204d3ef70c60e25074dc7ffd/development/source_code/README.md。使用如下以curl开始的命令组合,最后部分的layer可以指定为topaz、peridot和garnet,或者指定仅下载操...原创 2019-06-11 21:37:30 · 2037 阅读 · 0 评论 -
Fuchsia系统ninja编译
使用如下的fx子命令build编译fuchsia代码。实际上运行的是目录tools/devshell/下的编译脚本build。fx将调用ninja运行两次:第一次编译zircon,第二次编译fuchsia。~/fuchsia$ scripts/fx build其实,每个fx的子命令都对应着一个tools/devshell目录下的脚本文件:~/fuchsia$ ls tools/de...原创 2019-06-13 19:44:06 · 1330 阅读 · 0 评论 -
Zircon设备模型
Zircon内核中,设备驱动程序以ELF格式的共享库形式存在,由devhost进程按需动态加载(实现代码参见zircon/system/core/devmgr/devhost/目录)。核心设备管理进程(devmgr),包含具有跟踪设备与驱动关联的devcoordinator进程,同时管理着驱动程序发现,devhost进程创建和控制,还要维护设备文件系统(devfs),通过devfs机制,用户...原创 2019-06-14 20:13:01 · 1745 阅读 · 0 评论 -
Fuchsia命名空间
Fuchsia命名空间命名空间是Fuchsia操作系统中文件存取和服务发现的基石。定义命名空间是一个综合的层级结构,包括文件、目录、套接口、服务、设备和其它的有名对象,这些对象被其环境提供给组件使用。让我们稍微解释一下。有名对象: 命名空间中包含的可由名字枚举和访问的对象,诸如列出一个目录的内容和打开一个文件。综合层级结构: 命名空间为一个由对象组成的树状结构,这些对象可由其它命名空间...原创 2019-06-19 21:41:46 · 620 阅读 · 0 评论 -
fuchsia编译
fuchsia代码主要在搜索网站的源码站,本地开发环境为Ubuntu 16.04.3,如下:$ cat /etc/issueUbuntu 16.04.3 LTS \n \l以下命令下载fuchsia工程代码,curl的-s选项开启静默模式,减少打印信息:$ curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash.原创 2020-07-24 10:19:07 · 1937 阅读 · 0 评论 -
Fuchsia沙盒
沙盒本文档描述Fuchsia系统中的沙盒如何运作.空进程一无所有在Fuchsia系统中,新创建的进程一无所有。新进程不能访问任何内核对象,不能分配内存,甚至不能执行代码。理所当然的,这样的进程没有什么用处,这就是为什么在创建进程时我们通常为其附带初始资源和能力的原因。更通常的情况是,进程与附带的资源一起开始执行一些代码,这些资源包括初始堆栈,命令行参数,环境变量和初始句柄集合。最重要的初始...原创 2019-06-20 20:03:33 · 691 阅读 · 0 评论 -
Fuchsia无线网络
Fuchsia无线网络介绍Fuchsia系统的无线网络协议栈旨在提供一个符合IEEE Std 802.11规定的非AP(Access Point)客户端网络实现。支持具有"full MAC" 和 "soft MAC"固件的硬件,对应的802.11协议的MLME层(MAC subLayer Management Entity)分别实现在固件和主机的OS中。High-level architec...原创 2019-06-20 20:19:04 · 526 阅读 · 0 评论 -
Zircon调度器
Zircon 调度背景任何调度器首要的责任都是在所有请求的线程之间分配处理器的有限时间资源。在通用操作系统中,尽可能实现公平的分配,确保所有的线程都能够取得一定的进展。Zircon的调度器由Little Kernel的调度器进化而来。所以是以一个最小化的调度器实现开始,并且随着工程的成长,可依据需求进行扩展。设计概述本质上,机器中的每个逻辑处理器上运行着一个调度器。这些调度器独立运行,...原创 2019-06-20 20:34:57 · 2035 阅读 · 0 评论 -
Fuchsia操作系统workstation系统
在fuchsia编译完成之后,使用fx run可在qemu上运行。以下大致看一下它的目录结构。首先是顶层目录,如下,fuchsia没有传统的linux系统的usr、home、proc之类的目录。$ ls -l /drwxr-xr-x 1 0 0 0 Jul 21 23:33 bindr-------- 1 0 ...原创 2019-06-11 21:31:33 · 1091 阅读 · 0 评论 -
FIDL指南
FIDL 指南受众: 初级FIDL开发者.前提: 至少具有C++或Dart语言的初级技能.文章目录关于本指南获取和编译FIDL源代码FIDL 架构Hello World "Echo" interfaceGenerated filesC++语言的`Echo`服务端头文件 File headersmain 函数The `EchoServerApp()` constructor函数`EchoStr...原创 2019-06-27 20:18:13 · 4336 阅读 · 0 评论