RT-Thread finsh源码分析: finsh_var.h

Advertisement

/*

* Variable implementation in finsh shell.

*

* COPYRIGHT (C) 2006 - 2013, RT-Thread Development Team

*

* This file is part of RT-Thread (http://www.rt-thread.org)

* Maintainer: bernard.xiong <bernard.xiong at gmail.com>

*

* All rights reserved.

*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation; either version 2 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License along

* with this program; if not, write to the Free Software Foundation, Inc.,

* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

*

* Change Logs:

* Date Author Notes

* 2010-03-22 Bernard first version

*/

#ifndef __FINSH_VAR_H__

#define __FINSH_VAR_H__

#include <finsh.h>

/*

* The variable in finsh is put in data segment as a global variable.

* The 'finsh_var' structure presents the structure of variable in data segment.

*/

/*

* finsh_var是全局变量,属于数据段

*/

struct finsh_var

{

//数组长度加1,可以在循环中避免>=或者<=临界问题,增加代码可读性

char name[FINSH_NAME_MAX + 1];/* the name of variable */

//错误类型

u_char type;/* the type of variable */

//联合,模糊定义,动态扩展

/* variable value */

union {

char char_value;

short short_value;

intint_value;

longlong_value;

void*ptr;

}value;

};

//声明为全局数据,注意数组未初始化,应该放在.bss段

extern struct finsh_var global_variable[];

int finsh_var_init(void); //数组global_variable初始化

int finsh_var_insert(const char* name, int type); //插入var到数组global_variable

int finsh_var_delete(const char* name); //从数组移出var

struct finsh_var* finsh_var_lookup(const char* name); //查找var

#endif

本文出自 “山下问童子” 博客,请务必保留此出处

Similar Posts:

  • SystemClock.sleep和Thread.sleep源码分析

    一.在android中休眠3s钟有2中方法: 1.SystemClock.sleep(3000); 2.Thread.sleep(3000); 二.通过系统源码区别 1.SystemClock.sleep(long ms)源码: public static void sleep(long ms) { long start = uptimeMillis(); long duration = ms; boolean interrupted = false; do { try { <span styl

  • Ngnix源码分析-win32-ngx_alloc.h

    nginxoswin32ngx_alloc.h /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_ALLOC_H_INCLUDED_ #define _NGX_ALLOC_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> void *ngx_alloc(size_t size, ngx_log_t *log); voi

  • nginx源码分析(nginx.h)

    如下图,nginx.h头文件只是定义了nginx的版本号号及名字标识

  • mini-httpd源码分析-match.h

    //字符串匹配,匹配返回 1,否则返回 0. //pattern可以通过任意个 | 字符,组合match_one中pattern的功能 int match(const char* pattern, const char* string) { const char* or; for (;;) { or = strchr(pattern, '|'); if (or == (char*)0) return match_one(pattern, strlen(pattern), string); if

  • muduo源码分析:线程类Thread封装

    线程id Linux中,每个进程有一个pid,类型pid_t,由getpid()取得. Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id).Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,数据段等. 有时候我们可能需要知道线程的真实pid.比如进程P1要向另外一个进程P2中的

  • wget源码分析(一):wget.h文件分析

    写在前面的话:也没有做过源码分析,确实拿到了源码之后以前就只是看看源码里面坐着写的那些很给力的工具类之类的,比如以前看zermoq,czmq, lighthttpd这些大神级源码,我大都还是停留在看看他们写的工具类,比如:hash, map, list, arraylist等等这些工具集拿来然后用在我自己的工程里面,这么着确实给我的工作带来了很多的方便,但是也是凸显出我对很多的源码其实并未深入其中的. 这次来到上海了,工作不是很忙,所以还是想专心下来,看看所有的源码,提高自己的能力为主要目标,源

  • PHP扩展编写、PHP扩展调试、VLD源码分析、基于嵌入式Embed SAPI实现opcode查看

    catalogue 1. 编译PHP源码 2. 扩展结构.优缺点 3. 使用PHP原生扩展框架wizard ext_skel编写扩展 4. 编译安装VLD 5. Debug调试VLD 6. VLD源码分析 7. 嵌入式Embed SAPI编程 1. 编译PHP源码 wget http://cn2.php.net/distributions/php-5.5.31.tar.gz tar -zvzf php-5.5.31.tar.gz //为了尽快得到可以测试的环境,我们仅编译一个最精简的PHP.通过

  • ConcurrentHashMap Java 8源码分析

    涉及到的数据结构 Node 1.8 版本的 ConcurrentHashMap 不再采用 Segment 实现,而是改用 Node,Node 是一个链表的结构,每个节点可以引用到下一个节点(next). Node是最核心的内部类,包装了key-value键值对,所有插入ConcurrentHashMap的数据都包装在这里面. 它与HashMap中的定义很相似,但是有一些差别它对value和next属性设置了volatile同步锁,它不允许调用setValue方法直接改变Node的value域,它

  • string源码分析 ——转载 http://blogs.360.cn/360cloud/2012/11/26/linux-gcc-stl-string-in-depth/

    1. 问题提出 最近在我们的项目当中,出现了两次与使用string相关的问题. 1.1. 问题1:新代码引入的Bug 前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求.测试阶段没有问题,但上线之后,偶尔会引起错误的逻辑输出甚至崩溃.这个问题困扰着我们很久.我们对新增代码做周详单元测试和集成测试都没有发现问题,最后只能逼迫我们去看那一大段未修改过原始代码逻辑.该项目中经常会碰到使用string,原始代码中有这样一段逻辑引起了我们的怀疑: 1 string string_i

  • android消息处理机制学习(三)-Handler,Message,MessageQueue,Looper源码分析

    转载自:http://blog.csdn.net/yanbober/article/details/45936145.这篇博主的文章讲解得非常棒,其他也有比较棒的一些文章,大家可以关注一下. 这篇文章主要讲解我们消息处理机制当中的几个类的源码的分析. 1 背景 之所以选择这个知识点来分析有以下几个原因: 逛GitHub时发现关注的isuss中有人不停的在讨论Android中的Looper , Handler , Message有什么关系. 其实这个知识点对于Android初学者来说很常用,但是初

Tags: