硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4262|回复: 3
收起左侧

[FreeRTOS] FreeRTOS里面新增的线程局部变量指针(TLS  Thread Local Storage Point

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2015-8-20 12:06:45 | 显示全部楼层 |阅读模式
官方的介绍:http://www.freertos.org/thread-local-storage-pointers.html
wiki百科TLS介绍:https://en.wikipedia.org/wiki/Thread-local_storage

网上查了些资料都是基于window的TLS介绍,读起来稍有些吃力。uCOS-II和III里面也有这个机制,只是没有给出代码。
====================================================================================================
单独看官方的源码,这两个函数比较简单,就是在每个任务控制块里面放一组指针变量,
这些指针数组可以存放其它用户使用变量的地址,就这么一个功能,函数里面也没有做什么OS的互斥操作。
/*-----------------------------------------------------------*/
#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )

    void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue )
    {
    TCB_t *pxTCB;

        if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS )
        {
            pxTCB = prvGetTCBFromHandle( xTaskToSet );
            pxTCB->pvThreadLocalStoragePointers[ xIndex ] = pvValue;
        }
    }
#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */
/*-----------------------------------------------------------*/

#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )

    void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex )
    {
    void *pvReturn = NULL;
    TCB_t *pxTCB;

        if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS )
        {
            pxTCB = prvGetTCBFromHandle( xTaskToQuery );
            pvReturn = pxTCB->pvThreadLocalStoragePointers[ xIndex ];
        }
        else
        {
            pvReturn = NULL;
        }
        return pvReturn;
    }
#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */
====================================================================================================
如何使用这两个函数也比较容易,就是不知道在实际工程中改如何操作,官方提供的Demo中也没有相关的介绍。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
 楼主| 发表于 2015-8-21 09:19:55 | 显示全部楼层
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2015-8-21 10:14:10 | 显示全部楼层
线程是window软件中常用的,嵌入式的应用中比较少见,没什么经验。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
 楼主| 发表于 2015-8-21 10:23:15 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:
线程是window软件中常用的,嵌入式的应用中比较少见,没什么经验。
昨天找到了一个人写的博客,前面这段话说到了点上,看其它的资料都是在讲理论,不好理解
http://www.cnblogs.com/hdtianfu/archive/2012/10/18/2730282.html


1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 16:22 , Processed in 0.227013 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表