Hunter的大杂烩 技术学习笔记

2006-06-05

struct to class convertor

Filed under: C++ — hunter @ 1:33 pm

下载

用于将struct 结构转换为 class 类声名

#ifndef SAMPLE_STRUCT_H
#define SAMPLE_STRUCT_H

#include

/* dfasdf */
//asdfasdf
typedef struct
{
    int  dwAbc; /* dfasdf */
    char cAbcd;
    int  adwAbcde[16];
}HAHA;
struct HAHA_1
{
    int  dwBbb; // asdfaf
    char cKkkk;
};

typedef struct _WAHAHA_{
    int  dwTestInt;
    char *strUserName;
    char  strUserNick[111];
}HAHA;

#endif
 

——————————————————————-

class CHAHA
{
private:
public:
        const int* GetAbcde();
        void SetAbcde();

        uint8_t GetAbcd();
        void SetAbcd();

        int GetAbc();
        void SetAbc();

};
class CHAHA_1
{
private:
public:
        uint8_t GetKkkk();
        void SetKkkk();

        int GetBbb();
        void SetBbb();

};
class C_WAHAHA_
{
private:
public:
        const char* GetUserNick();
        void SetUserNick();

        const char* GetUserName();
        void SetUserName();

        int GetTestInt();
        void SetTestInt();

};

2006-06-02

Linux SystemV MsgQ 4K原子性的传说检查

Filed under: Linux — hunter @ 3:59 pm
看了一下内核代码,似乎linux 的sysv msgq 没有 原子操作必须 < 4k的限制,
只是在内核存储的时候,是以每块4076的切割后存储。
DATALEN_MSG == 4096 – sizeof(struct msg_msg) == 4076

asmlinkage long sys_msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg)
{
 struct msg_queue *msq;
 struct msg_msg *msg;
 long mtype;
 int err;
 
 if (msgsz > msg_ctlmax || (long) msgsz < 0 || msqid < 0)   return -EINVAL;  if (get_user(mtype, &msgp->mtype))
  return -EFAULT;
 if (mtype < 1)   return -EINVAL;

// 从用户空间拷贝数据到内核,同时把数据切割为DATALEN_MSG(4096 – sizeof(struct msg_msg))大小
// 每块内存用msg_msg格式组成链表形式
// 在分块拷贝时可能会被其他调用中断
(more…)

Powered by WordPress