Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6465095
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16635
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

分类: 嵌入式

2015-06-18 09:50:58

1,types.h

点击(此处)折叠或打开

  1. /**
  2.   ******************************************************************************
  3.   * @file types.h
  4.   * @author sr
  5.   * @version V0.0.0.0
  6.   * @date 2014.04.22
  7.   * @brief 类型定义
  8.   ******************************************************************************
  9.   */

  10. #ifndef __TYPES_H__
  11. #define __TYPES_H__

  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif

  15. /* Define to prevent recursive inclusion
  16. -------------------------------------*/
  17. #include <stdio.h>     // 标准输入输出定义
  18. #include <stdlib.h>     // 标准函数库定义
  19. #include <stdbool.h>        // bool
  20. #include <string.h>             // memset
  21. #include <unistd.h>     // Unix标准函数定义,read,write...
  22. #include <sys/types.h>
  23. #include <sys/stat.h>
  24. #include <fcntl.h> // 文件控制定义
  25. #include <termios.h>     // POSIX中断控制定义
  26. #include <errno.h>     // 错误号定义
  27. #include <pthread.h>        // pthread_t,pthread_create...
  28. #include <ctype.h>            // tolower


  29. /* 类型定义 */
  30. //typedef         char        int8_t;
  31. typedef unsigned     char         uint8_t;

  32. typedef signed        short         int16_t;
  33. typedef unsigned     short         uint16_t;

  34. typedef signed        int            int32_t;
  35. typedef unsigned     int         uint32_t;

  36. typedef signed        long long     int64_t;
  37. typedef unsigned long long         uint64_t;




  38. /* 0,全局 */
  39. #define    BUFFER_SIZE                256
  40. #define    MAXARGS                    36        /* max number of command args    */

  41. /* 1,COM,串口相关*/
  42. #define    COM_TYPE_UPPER_DEVICE    1
  43. #define    COM_TYPE_LOWER_DEVICE    2

  44. #define    COM_BUFFER_SIZE            (BUFFER_SIZE)

  45. #define    CFG_PROMPT                "[SANRAY]# "    /* Monitor Command Prompt    */


  46. /* 2,pools,池相关 */



  47. /* 3,命令相关*/
  48. #define    CMD_DATA_LEN_MAX        (BUFFER_SIZE)


  49. /* 4,环形缓冲区相关 */
  50.     /* 环形缓冲区中保存的元素的最大个数 */
  51. #define    CBUF_MAX                32






  52. #ifdef __cplusplus
  53. }
  54. #endif

  55. #endif
  56. /* END OF FILE
  57. ---------------------------------------------------------------*/

2,thread.h

点击(此处)折叠或打开

  1. /**
  2.   ******************************************************************************
  3.   * @file thread.h
  4.   * @author sr
  5.   * @version V0.0.0.0
  6.   * @date 2014.05.16
  7.   * @brief 多线程中相关封装
  8.   * @Bibliography    nginx
  9.   ******************************************************************************
  10.   */

  11. #ifndef __THREAD_H__
  12. #define __THREAD_H__

  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif

  16. /* Define to prevent recursive inclusion
  17. -------------------------------------*/
  18. #include "types.h"





  19. typedef    struct _mutex
  20. {
  21.     pthread_mutex_t        mutex;
  22. }mutex_t;


  23. typedef    struct _cond
  24. {
  25.     pthread_cond_t        cond;
  26. }cond_t;


  27. typedef    pthread_t        tid_t;
  28. typedef    pthread_attr_t    attr_t;
  29. typedef    void*    (* thread_fun_t)(void*);


  30. typedef    struct _thread
  31. {
  32.     tid_t            tid;
  33.     cond_t            *cv;
  34.     int32_t            state;
  35.     int32_t            stack_size;
  36.     attr_t         attr;
  37.     thread_fun_t    fun;
  38. }thread_t;



  39. /* mutex */
  40. extern    int32_t        mutex_init(mutex_t    *m);
  41. extern    int32_t        mutex_destroy(mutex_t    *m);
  42. extern    int32_t        mutex_lock(mutex_t    *m);
  43. extern    int32_t        mutex_unlock(mutex_t    *m);


  44. /* cond */
  45. extern    int32_t        cond_init(cond_t    *c);
  46. extern    int32_t        cond_destroy(cond_t    *c);
  47. extern    int32_t        cond_signal(cond_t *c);
  48. extern    int32_t        cond_wait(cond_t    *c,mutex_t *m);



  49. /* thread */
  50. /* 线程的创建,其属性的设置等都封装在里面 */
  51. extern    int32_t        thread_create(thread_t *t);
  52. //extern    int32_t        thread_init(thread_t    *t);

  53. #define    thread_join(t, p)     pthread_join(t, p)
  54. #define    thread_self()        pthread_self()
  55. #define    thread_sigmask        pthread_sigmask


  56. #ifdef __cplusplus
  57. }
  58. #endif

  59. #endif
  60. /* END OF FILE
  61. ---------------------------------------------------------------*/

3,thread.c

点击(此处)折叠或打开

  1. #include "thread.h"




  2. /* mutex */
  3. int32_t        mutex_init(mutex_t    *m)
  4. {
  5.     int32_t        ret = OPER_OK;

  6.     if((ret = pthread_mutex_init(&m->mutex, NULL)) != 0)
  7.         ret = -THREAD_MUTEX_INIT_ERROR;

  8.     return ret;
  9. }


  10. int32_t        mutex_destroy(mutex_t    *m)
  11. {
  12.     int32_t        ret = OPER_OK;

  13.     if((ret = pthread_mutex_destroy(&m->mutex)) != 0)
  14.         ret = -MUTEX_DESTROY_ERROR;

  15.     return ret;
  16. }



  17. int32_t        mutex_lock(mutex_t    *m)
  18. {
  19.     int32_t        ret = OPER_OK;

  20.     if((ret = pthread_mutex_lock(&m->mutex)) != 0)
  21.         ret = -THREAD_MUTEX_LOCK_ERROR;

  22.     return ret;
  23. }



  24. int32_t        mutex_unlock(mutex_t    *m)
  25. {
  26.     int32_t        ret = OPER_OK;

  27.     if((ret = pthread_mutex_unlock(&m->mutex)) != 0)
  28.         ret = -THREAD_MUTEX_UNLOCK_ERROR;
  29.     
  30.     return ret;
  31. }






  32. /* cond */
  33. int32_t        cond_init(cond_t    *c)
  34. {
  35.     int32_t        ret = OPER_OK;

  36.     if((ret = pthread_cond_init(&c->cond, NULL)) != 0)
  37.         ret = -THREAD_COND_INIT_ERROR;

  38.     return ret;
  39. }



  40. int32_t        cond_destroy(cond_t    *c)
  41. {
  42.     int32_t        ret = OPER_OK;

  43.     if((ret = pthread_cond_destroy(&c->cond)) != 0)
  44.         ret = -COND_DESTROY_ERROR;
  45.     
  46.     return ret;
  47. }



  48. int32_t        cond_signal(cond_t *c)
  49. {
  50.     int32_t        ret = OPER_OK;


  51.     if((ret = pthread_cond_signal(&c->cond)) != 0)
  52.         ret = -COND_SIGNAL_ERROR;
  53.     
  54.     return ret;
  55. }




  56. int32_t        cond_wait(cond_t    *c,mutex_t *m)
  57. {
  58.     int32_t        ret = OPER_OK;

  59.     if((ret = pthread_cond_wait(&c->cond, &m->mutex)) != 0)
  60.         ret = -COND_WAIT_ERROR;    
  61.     
  62.     return ret;
  63. }

阅读(2772) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~