码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D mono arm 非要吃中断 33

时间:2015-03-06 15:57:30      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:linux   android   

现在也不到有多少游戏是 Unity3D 写的

操作倒是很省事,在Unity中写了程序,直接生成了 Android的 APK

但内部其实还是听复杂的,对于用 C#生成的脚本需要用 mono 来解释执行

而Android应用本来就是运行在Dalvik Java 虚拟机, 就是经过了两层 runtime 才运行


不过我们更”变态“,我们想在qemu-arm ( 主机是x86)  中运行带 mono 的Unity程序

结果遇到个问题

mono 报错
mono : * Assertion at mini-posix.c:382, condition `sigaction (signo, &sa, &previous_sa) != -1‘ not met


加 log 发现是设置 中断 33 出现的问题

======== do_sigaction sig 33 host_sig 33 ret -1
02-10 03:54:43.441 147 186 F mono : * Assertion at mini-posix.c:382, condition `sigaction (signo, &sa, &previous_sa) != -1‘ not met


编写了一个小程序 pnp5  直接截取中断 33 出错

$ LD_LIBRARY_PATH=./system/bionic_arm/system/lib ./system/target_libc/system/bin/qemu-arm ./system/bionic_arm/system/bin/pnp5 
sigaction 33 return -1

用glibc编译此程序运行也出错

应该是Ubuntu Linux 不让 设置 中断 33 


不过既然 Unity 这么流行,不可能就这样出错,在arm手机试验

用NDK编译此程序,居然没有出错

技术分享


因此在Android的 linux中, 中断 33是允许设置的


程序清单

payne@payne-desktop:~/pnp/pnp5$ cat Android.mk 
#ifeq ($(TARGET_ARCH),arm)

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:=         main.c


LOCAL_MODULE:= pnp5
LOCAL_MODULE_TAGS := optional


include $(BUILD_EXECUTABLE)

#endif
payne@payne-desktop:~/pnp/pnp5$ cat main.c 

#include <signal.h>
#include <stdio.h>

void
termination_handler (int signum)
{
/*
  struct temp_file *p;

  for (p = temp_file_list; p; p = p->next)
    unlink (p->name);
*/
}

int
main (void)
{
  struct sigaction new_action, old_action;
  int my_singals[9] = { 4,6,7,8,11,16,13,34,33 };
  int i=0;

  /* Set up the structure to specify the new action. */
  new_action.sa_handler = termination_handler;
  sigemptyset (&new_action.sa_mask);
  new_action.sa_flags = 0;
 
  for ( i=0; i<9; i++ )
      printf(" sigaction %d return %d\n",my_singals[i], sigaction(my_singals[i], &new_action, &old_action));

  return 0;
}

另外 Unity 生成的 x86 lib是可以在Ubuntu Linux 下跑得,所以只有 mono-arm 的库才设置中断 33


Unity3D mono arm 非要吃中断 33

标签:linux   android   

原文地址:http://blog.csdn.net/span76/article/details/44099431

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!