uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(38):未命名union的问题

 

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

 

本文适用于

ADI bf561 DSP

优视BF561EVB开发板

uclinux-2008r1.5-rc3(smp patch)

Visual DSP++ 5.0(update 5)

 

欢迎转载,但请保留作者信息

 

include/linux/shed.h中定义了一个结构体:

 

/*

 * NOTE! "signal_struct" does not have it's own

 * locking, because a shared signal_struct always

 * implies a shared sighand_struct, so locking

 * sighand_struct is always a proper superset of

 * the locking of signal_struct.

 */

struct signal_struct {

     /* job control IDs */

     pid_t pgrp;

     struct pid *tty_old_pgrp;

 

     union {

         pid_t session __deprecated;

         pid_t __session;

     };

};

include/linux/init_task.h中定义了一个宏来对这个结构体进行初始化:

 

#define INIT_SIGNALS(sig) {                        /

     .count        = ATOMIC_INIT(1),                /

     .wait_chldexit     = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),/

     .shared_pending    = {                         /

         .list = LIST_HEAD_INIT(sig.shared_pending.list),   /

         .signal =  {{0}}},                   /

     .posix_timers = LIST_HEAD_INIT(sig.posix_timers),      /

     .cpu_timers   = INIT_CPU_TIMERS(sig.cpu_timers),        /

     .rlim         = INIT_RLIMITS,                      /

     .pgrp         = 0,                        /

     .tty_old_pgrp   = NULL,                        /

     { .__session      = 0},                        /

}

在这里

     { .__session      = 0},                        /

会引发一个错误:

"../../arch/blackfin/kernel/init_task.c", line 38: cc0136:  error: union

          "<unnamed>" has no field "__session"

  static struct signal_struct init_signals = INIT_SIGNALS(init_signals);

怎么看都有__session这个成员啊,实际引发这个错误的原因是在结构体中使用了未命名的union。因此必须做如下修改:

struct signal_struct {

     /* job control IDs */

     pid_t pgrp;

     struct pid *tty_old_pgrp;

 

     union {

         pid_t session __deprecated;

         pid_t __session;

     }signal_struct_union;

};

其实就是随便给这个union定义一个变量。

 

1       参考资料

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(32)start_kernel(2009-1-15)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(33).l1.text(2009-01-16)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(34).init.text(2009-01-16)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(35).init.data(2009-01-16)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(36).data.init_task(2009-01-16)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(37)segment(2009-01-16)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值