--V1.14 --
2015－12－29
修正了common.c中对日志消息队列的操作，其中包括：交换log_prepare与log_writing>队列指针的bug；以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b
ug。修正了log_path(即日志文件名）不会随时间改变的bug。
--V1.13 --
2015－12－23
修正在记录日志中检查目录时（在函数create_dir中），由于采用线程进行日志记录，多次调用get_nic_info可能会导致的将日志文件路径名变错的问题。在get_nic_info中判断log_path是否被初始化过，如过未初始化，则到共享内存中读取。否则，为初始化过，直接使用该值,并在create_dir中使用局部变量保存该值，在create_dir中使用操作该局部变量，而不去改变该全局变量的值。

-V1.12 --
2015－12－23
修正在程序开始时对IPC变量删除的错误函数调用。
添加配置项crazyping,当其不为零时，会在每次取网卡信息时进行ping操作。


--V1.11 --
2015－12－18
添加在程序开始时对IPC变量是否已存在的判断，如果已存在，则将其删除。
将宏TESTINTERVAL的定义去除，不然不会调用南瑞的库函数。

--V1.10 --
2015－12－11
修改IPC信号量的相关操作

1)通过对代码的分析发现：在使用信号量时存在错误。在使用进行PV原语操作时，进行了相反的操作，其中加锁操作应减少信号量的计数，而去锁应增加信号量的计数，但库中进行了相反的操作，对其进行了修改。即将get_sem中对信号量的操作改为－1，而在release_sem函数中对信号量的操作变为1（即+1）。同时在init_sem函数中将该信号量的值初始化为1。

2）信号量应由网卡监控程序sys_nicmonitor创建，而不应由用户程序创建，对其进行了相应的修改（在创建信号量时在flag中添加IPC_EXCL,并将用户程序引用信号量时的flag中去除IPC_CREATE)。

3)在对获取网卡信息函数get_nic_info中添加获取时间的操作后得知，其中对getpwdnam的调用会减慢函数的工作（该函数并非每次都减慢函数很多，多数在30～40ms左右，但在测试中曾达到2s左右）。对其修改为在sys_nicmonitor程序启动时，调用getpwdnam函数，并将得到的用户主目录名写入到一块共享内存中。当用户程序要获得该目录名时，则从该值从共享内存中读取出来，而不需要每次都通过getpwdnam来获取，故可以提高该函数的速度。


=-======update 2015-11-17
编译前，进入dep目录运行sh run.sh，安装编译依赖文件.

然后sh build.sh编译1.9版本的sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz

调试模式下：
cd sys_nicmonitor-1.9
make clean
make 
make test
make runtest

版本号变更方法，更新sys_nicmonitor/version.h文件，需要同时修改//后面的和define中的，前者用于pkg包，后者用于sys_nicmonitor程序.
制作pkg包方法： sh build.sh



=========
编译前准备:
  编译前先安装dotconf软件包。
  libman.so拷贝到/usr/lib64/下
  pkgadd dotconf#1.0.13-1.pkg.tar.gz

编译说明：
  在Rocky 4.2上编译

  执行： sh build.sh
     将在当前的目录下生成安装包：
    sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz

========
安装说明：
  1)安装，以root的用户执行安装命令：
    pkgadd sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz
    如果之前已经安装，则可先卸载旧的然后再安装，或者通过更新方式安装
      卸载命令: pkgrm sys_nicmonitor
      更新方式安装命令：
      pkgadd －u sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz

  2）查看安装是否成功
    pkginfo -i|grep sys_nicmonitor
    或者
    查看d5000用户的目录下lib/libnic_shm.so和bin/sys_nicmonitor的日期是否匹配

=======＝

版本说明：
--V1.9 --
  2013-08-12
  1）修复问题：占用内存快速累加，导致内存占用很大
    问题描述：日志线程资源退出时未回收，导致占用内存快速累加
    解决办法：修改为一个日志线程，并且线程退出时设置为自动回收。
              将日志写文件的地方放到common.c中，以便动态库和daemon程序使用一个。

  2）修复问题：日志文件名在家目录或者var目录下，未在规定位置
    问题描述：日志文件命名在一个单独的线程进行，导致日志线程和该线程对log_path存在同时访问的情况。
    导致在换天或者换月时，日志文件名变更一半时，日志写线程此时写日志，用未更新完成的
    log_path创建日志，导致日志文件不再规定的位置。
    解决办法：增加线程互斥锁pthread_mutex对log_path进行保护，修复该问题。


--V1.8.1--
  2013-06-05
  1)修改BUG：ping_gw函数当PING失败时没有尝试对余下的GW进行PING操作
  2)增加环境变量SYS_NIC_DEBUG用于调试流量抖动问题。

--V1.8 --
  2013－05－27
对系统高磁盘IO情况下，应用如果进行IO将可能会被阻塞。本版本为此作出调整。
cs-fes1上编译测试OK。

1） 去掉shm和sem的实体文件
#define SHM_PATH  "$D5000_HOME/share/sys_netcard_shm_path"
#define SEM_PATH  "$D5000_HOME/share/sys_netcard_sem_path"

用key=0x1d5200 代替 sem
用key=0x1d5010 代替 shm


2）去掉动态库中get_nic_info接口中，判断路径的opendir调用，采用实际路径
  上层应用每秒可能调用3次这个接口，每判断一个网卡都调用一次，判断都个网卡的状态时就调用多次。
  
  可改进：一次调用get_nic_info接口，可输入多个网卡，一次返回所有网卡状态信息。

3) record_log函数为日志函数，每次写一次，都重新打开一次文件。
  修改为线程模式，当记录日志时，不会被磁盘IO阻塞。

4) 安装目录为d5000用户的HOME目录下的lib和bin目录

----


V1.6与V1.7差异
共享内存路径修改:
由/home/d5000/someone/tmp/sys_netcard_shm_path 改为 /home/d5000/someone/share/sys_netcard_shm_path
信号量路径修改:
由/home/d5000/someone/tmp/sys_netcard_sem_path 改为 /home/d5000/someone/share/sys_netcard_sem_path

注意：在编译过程中，需要动态看libman.so，它存放在目录 tags/下面 ，在进行编译的时候需要将其拷贝到
/lib64/目录下，编译的基础环境是 Rocky 4.2 系统。

pkgmk命令的使用：
将源代码打包成name-version.tar.gz样式，编写Pkgfile文件。
使用命令：
	pkgmk -um #更新软件包的md5值
	pkgmk -kw #制作pkg安装包

