diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_codecs_prim.c patch_dir/asn_codecs_prim.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_codecs_prim.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/asn_codecs_prim.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 4,10 ****
   */
  #include <asn_internal.h>
  #include <asn_codecs_prim.h>
- #include <errno.h>
  
  /*
   * Decode an always-primitive type.
--- 4,9 ----
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_internal.h patch_dir/asn_internal.h
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_internal.h	2011-03-31 10:22:57.000000000 +0200
--- patch_dir/asn_internal.h	2011-05-31 10:28:26.000000000 +0200
***************
*** 10,20 ****
--- 10,31 ----
  #define	_ASN_INTERNAL_H_
  
  #include "asn_application.h"	/* Application-visible API */
+ #ifndef USER_MODE
+ #include <rtai.h>
+ #include <rtai_malloc.h>
+ #include "rtai_mem.h"
+ #endif
  
  #ifndef	__NO_ASSERT_H__		/* Include assert.h only for internal use. */
  #include <assert.h>		/* for assert() macro */
  #endif
  
+ #ifndef USER_MODE
+ #ifndef assert
+ #define assert(expr) ((expr) ? (void) 0 : printk("Assertion failed in %s:%d\n", __FILE__, __LINE__))
+ #endif
+ #endif
+ 
  #ifdef	__cplusplus
  extern "C" {
  #endif
***************
*** 23,32 ****
--- 34,51 ----
  #define	ASN1C_ENVIRONMENT_VERSION	922	/* Compile-time version */
  int get_asn1c_environment_version(void);	/* Run-time version */
  
+ #ifdef USER_MODE
  #define	CALLOC(nmemb, size)	calloc(nmemb, size)
  #define	MALLOC(size)		malloc(size)
  #define	REALLOC(oldptr, size)	realloc(oldptr, size)
  #define	FREEMEM(ptr)		free(ptr)
+ #else
+ #define	CALLOC(nmemb, size)	rt_calloc(nmemb,size)
+ #define	MALLOC(size)		rt_malloc(size)
+ #define	REALLOC(oldptr, size)	rt_realloc(oldptr, size)
+ #define	FREEMEM(ptr)		rt_free(ptr);
+ #endif
+ 
  
  /*
   * A macro for debugging the ASN.1 internals.
***************
*** 38,45 ****
  #ifdef	ASN_THREAD_SAFE
  #define	asn_debug_indent	0
  #else	/* !ASN_THREAD_SAFE */
! int asn_debug_indent;
  #endif	/* ASN_THREAD_SAFE */
  #define	ASN_DEBUG(fmt, args...)	do {			\
  		int adi = asn_debug_indent;		\
  		while(adi--) fprintf(stderr, " ");	\
--- 57,65 ----
  #ifdef	ASN_THREAD_SAFE
  #define	asn_debug_indent	0
  #else	/* !ASN_THREAD_SAFE */
! extern int asn_debug_indent;
  #endif	/* ASN_THREAD_SAFE */
+ #ifdef USER_MODE
  #define	ASN_DEBUG(fmt, args...)	do {			\
  		int adi = asn_debug_indent;		\
  		while(adi--) fprintf(stderr, " ");	\
***************
*** 47,52 ****
--- 67,81 ----
  		fprintf(stderr, " (%s:%d)\n",		\
  			__FILE__, __LINE__);		\
  	} while(0)
+ #else
+ #define ASN_DEBUG(fmt, args...) do {			\
+ 		int adi = asn_debug_indent;		\
+ 		while(adi--) printk(" ");	\
+ 		printk(fmt, ##args);			\
+ 		printk(" (%s:%d)\n",			\
+ 			__FILE__, __LINE__);		\
+ 	} while(0)
+ #endif
  #else	/* !__GNUC__ */
  void ASN_DEBUG_f(const char *fmt, ...);
  #define	ASN_DEBUG	ASN_DEBUG_f
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_SET_OF.c patch_dir/asn_SET_OF.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_SET_OF.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/asn_SET_OF.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 4,10 ****
   */
  #include <asn_internal.h>
  #include <asn_SET_OF.h>
- #include <errno.h>
  
  /*
   * Add another element into the set.
--- 4,9 ----
***************
*** 21,26 ****
--- 20,27 ----
  	/*
  	 * Make sure there's enough space to insert an element.
  	 */
+ 	ASN_DEBUG("SET ADD: count %d, size %d",as->count,as->size);
+ 
  	if(as->count == as->size) {
  		int _newsize = as->size ? (as->size << 1) : 4;
  		void *_new_arr;
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_system.h patch_dir/asn_system.h
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_system.h	2011-03-31 10:22:57.000000000 +0200
--- patch_dir/asn_system.h	2011-05-31 10:28:26.000000000 +0200
***************
*** 13,25 ****
  #include "config.h"
  #endif
  
! #include <stdio.h>	/* For snprintf(3) */
! #include <stdlib.h>	/* For *alloc(3) */
! #include <string.h>	/* For memcpy(3) */
! #include <sys/types.h>	/* For size_t */
! #include <limits.h>	/* For LONG_MAX */
! #include <stdarg.h>	/* For va_start */
! #include <stddef.h>	/* for offsetof and ptrdiff_t */
  
  #ifdef	WIN32
  
--- 13,39 ----
  #include "config.h"
  #endif
  
! #ifdef USER_MODE
! #include <stdio.h>	// For snprintf(3)
! #include <stdlib.h>	// For *alloc(3)
! #include <string.h>	// For memcpy(3)
! #include <sys/types.h>	// For size_t
! #include <limits.h>	// For LONG_MAX
! #include <stdarg.h>	// For va_start
! #include <stddef.h>	// for offsetof and ptrdiff_t
! #include <errno.h>      // For errno
! #else
! typedef char FILE;
! #include <linux/types.h>
! #include <linux/slab.h> // For snprintf
! #include <linux/sort.h> // For sort
! #define qsort(base,num,size,cmp_func) sort(base,num,size,cmp_func,NULL)
! #include <linux/errno.h>// For errno
! #ifndef errno
! extern int errno;
! #endif
! #include "bsearch.h"
! #endif
  
  #ifdef	WIN32
  
***************
*** 63,69 ****
  #include <types/vxTypes.h>
  #else	/* !defined(__vxworks) */
  
! #include <inttypes.h>	/* C99 specifies this file */
  /*
   * 1. Earlier FreeBSD version didn't have <stdint.h>,
   * but <inttypes.h> was present.
--- 77,85 ----
  #include <types/vxTypes.h>
  #else	/* !defined(__vxworks) */
  
! #ifdef USER_MODE
! #include <inttypes.h>	 /*C99 specifies this file */
! #endif
  /*
   * 1. Earlier FreeBSD version didn't have <stdint.h>,
   * but <inttypes.h> was present.
***************
*** 81,91 ****
  #define inline
  #endif	/* __GNUC__ */
  #else
! #include <stdint.h>	/* SUSv2+ and C99 specify this file, for uintXX_t */
  #endif	/* defined(sun) */
  #endif
  
! #include <netinet/in.h> /* for ntohl() */
  #define	sys_ntohl(foo)	ntohl(foo)
  
  #endif	/* defined(__vxworks) */
--- 97,109 ----
  #define inline
  #endif	/* __GNUC__ */
  #else
! #ifdef USER_MODE
! #include <stdint.h>	 /*SUSv2+ and C99 specify this file, for uintXX_t */
! #endif
  #endif	/* defined(sun) */
  #endif
  
! /*#include <netinet/in.h>  for ntohl() */
  #define	sys_ntohl(foo)	ntohl(foo)
  
  #endif	/* defined(__vxworks) */
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/ber_tlv_tag.c patch_dir/ber_tlv_tag.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/ber_tlv_tag.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/ber_tlv_tag.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 4,10 ****
   */
  #include <asn_internal.h>
  #include <ber_tlv_tag.h>
- #include <errno.h>
  
  ssize_t
  ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
--- 4,9 ----
***************
*** 57,63 ****
  	return 0;	/* Want more */
  }
  
! 
  ssize_t
  ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) {
  	char buf[sizeof("[APPLICATION ]") + 32];
--- 56,62 ----
  	return 0;	/* Want more */
  }
  
! #ifdef USER_MODE
  ssize_t
  ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) {
  	char buf[sizeof("[APPLICATION ]") + 32];
***************
*** 71,76 ****
--- 70,76 ----
  
  	return fwrite(buf, 1, ret, f);
  }
+ #endif
  
  ssize_t
  ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) {
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constraints.c patch_dir/constraints.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constraints.c	2011-03-31 10:22:57.000000000 +0200
--- patch_dir/constraints.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 1,4 ****
! #include "asn_internal.h"
  #include "constraints.h"
  
  int
--- 1,4 ----
! #include <asn_internal.h>
  #include "constraints.h"
  
  int
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constr_TYPE.c patch_dir/constr_TYPE.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constr_TYPE.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/constr_TYPE.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 4,10 ****
   */
  #include <asn_internal.h>
  #include <constr_TYPE.h>
- #include <errno.h>
  
  /*
   * Version of the ASN.1 infrastructure shipped with compiler.
--- 4,9 ----
***************
*** 29,34 ****
--- 28,34 ----
  	return type_descriptor->outmost_tag(type_descriptor, struct_ptr, 0, 0);
  }
  
+ #ifdef USER_MODE
  /*
   * Print the target language's structure in human readable form.
   */
***************
*** 75,77 ****
--- 75,78 ----
  	fprintf(stderr, "\n");
  	va_end(ap);
  }
+ #endif
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/der_encoder.c patch_dir/der_encoder.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/der_encoder.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/der_encoder.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 3,9 ****
   * Redistribution and modifications are permitted subject to BSD license.
   */
  #include <asn_internal.h>
- #include <errno.h>
  
  static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len,
  	asn_app_consume_bytes_f *cb, void *app_key, int constructed);
--- 3,8 ----
***************
*** 81,89 ****
--- 80,90 ----
  		asn_app_consume_bytes_f *cb,
  		void *app_key) {
  	ber_tlv_tag_t *tags;	/* Copy of tags stream */
+ 	ber_tlv_tag_t tags_array[8];
  	int tags_count;		/* Number of tags */
  	size_t overall_length;
  	ssize_t *lens;
+ 	ssize_t lens_array[8];
  	int i;
  
  	ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)",
***************
*** 102,111 ****
  		 * and initialize it appropriately.
  		 */
  		int stag_offset;
! 		tags = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t));
  		if(!tags) {	/* Can fail on !x86 */
! 			errno = ENOMEM;
! 			return -1;
  		}
  		tags_count = sd->tags_count
  			+ 1	/* EXPLICIT or IMPLICIT tag is given */
--- 103,121 ----
  		 * and initialize it appropriately.
  		 */
  		int stag_offset;
! 		//tags = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t));
! 		tags = &(tags_array[0]);
! 		if ((sd->tags_count + 1)>=8) {
! #ifdef USER_MODE
! 		  printf("der_encoder.c: ERROR tags array too small. Increase size!\n");
! 		  exit(-1);
! #endif
! 		  errno = ENOMEM;
! 		  return -1;
! 		}
  		if(!tags) {	/* Can fail on !x86 */
! 		  errno = ENOMEM;
! 		  return -1;
  		}
  		tags_count = sd->tags_count
  			+ 1	/* EXPLICIT or IMPLICIT tag is given */
***************
*** 124,135 ****
  	if(tags_count == 0)
  		return 0;
  
! 	lens = (ssize_t *)alloca(tags_count * sizeof(lens[0]));
  	if(!lens) {
! 		errno = ENOMEM;
! 		return -1;
  	}
! 
  	/*
  	 * Array of tags is initialized.
  	 * Now, compute the size of the TLV pairs, from right to left.
--- 134,154 ----
  	if(tags_count == 0)
  		return 0;
  
! 	//lens = (ssize_t *)alloca(tags_count * sizeof(lens[0]));
! 	lens = &(lens_array[0]);
! 	if (tags_count>=8) {
! #ifdef USER_MODE
! 	  printf("der_encoder.c: ERROR lens array too small. Increase size!\n");
! 	  exit(-1);
! #endif
! 	  errno = ENOMEM;
! 	  return -1;
! 	}
  	if(!lens) {
! 	  errno = ENOMEM;
! 	  return -1;
  	}
! 	
  	/*
  	 * Array of tags is initialized.
  	 * Now, compute the size of the TLV pairs, from right to left.
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/INTEGER.c patch_dir/INTEGER.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/INTEGER.c	2011-03-31 10:22:56.000000000 +0200
--- patch_dir/INTEGER.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 6,12 ****
  #include <asn_internal.h>
  #include <INTEGER.h>
  #include <asn_codecs_prim.h>	/* Encoder and decoder of a primitive type */
- #include <errno.h>
  
  /*
   * INTEGER basic type description.
--- 6,11 ----
***************
*** 103,109 ****
  static ssize_t
  INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) {
  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
! 	char scratch[32];	/* Enough for 64-bit integer */
  	uint8_t *buf = st->buf;
  	uint8_t *buf_end = st->buf + st->size;
  	signed long accum;
--- 102,108 ----
  static ssize_t
  INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) {
  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
! 	char scratch[128];	
  	uint8_t *buf = st->buf;
  	uint8_t *buf_end = st->buf + st->size;
  	signed long accum;
***************
*** 142,149 ****
--- 141,152 ----
  
  		el = INTEGER_map_value2enum(specs, accum);
  		if(el) {
+ 			scrsize = sizeof(scratch);
+ 			scr = scratch;
+ 			/* cannot use alloca in kernel
  			scrsize = el->enum_len + 32;
  			scr = (char *)alloca(scrsize);
+ 			*/
  			if(plainOrXER == 0)
  				ret = snprintf(scr, scrsize,
  					"%ld (%s)", accum, el->enum_name);
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/NativeEnumerated.c patch_dir/NativeEnumerated.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/NativeEnumerated.c	2011-03-31 10:22:57.000000000 +0200
--- patch_dir/NativeEnumerated.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 46,51 ****
--- 46,52 ----
                  asn_app_consume_bytes_f *cb, void *app_key) {
  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
          asn_enc_rval_t er;
+ 	char scratch[128];
          const long *native = (const long *)sptr;
  	const asn_INTEGER_enum_map_t *el;
  
***************
*** 57,63 ****
  	el = INTEGER_map_value2enum(specs, *native);
  	if(el) {
  		size_t srcsize = el->enum_len + 5;
! 		char *src = (char *)alloca(srcsize);
  
  		er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name);
  		assert(er.encoded > 0 && (size_t)er.encoded < srcsize);
--- 58,64 ----
  	el = INTEGER_map_value2enum(specs, *native);
  	if(el) {
  		size_t srcsize = el->enum_len + 5;
! 		char *src = (char *)scratch; //alloca(srcsize);
  
  		er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name);
  		assert(er.encoded > 0 && (size_t)er.encoded < srcsize);
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/OCTET_STRING.c patch_dir/OCTET_STRING.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/OCTET_STRING.c	2011-03-31 10:22:55.000000000 +0200
--- patch_dir/OCTET_STRING.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 6,12 ****
  #include <asn_internal.h>
  #include <OCTET_STRING.h>
  #include <BIT_STRING.h>	/* for .bits_unused member */
- #include <errno.h>
  
  /*
   * OCTET STRING basic type description.
--- 6,11 ----
diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/xer_encoder.c patch_dir/xer_encoder.c
*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/xer_encoder.c	2011-04-11 18:03:26.000000000 +0200
--- patch_dir/xer_encoder.c	2011-05-31 10:28:26.000000000 +0200
***************
*** 3,10 ****
   * Redistribution and modifications are permitted subject to BSD license.
   */
  #include <asn_internal.h>
! #include <stdio.h>
! #include <errno.h>
  
  /*
   * The XER encoder of any type. May be invoked by the application.
--- 3,10 ----
   * Redistribution and modifications are permitted subject to BSD license.
   */
  #include <asn_internal.h>
! //#include <stdio.h>
! //#include <errno.h>
  
  /*
   * The XER encoder of any type. May be invoked by the application.
***************
*** 41,46 ****
--- 41,47 ----
   * This is a helper function for xer_fprint, which directs all incoming data
   * into the provided file descriptor.
   */
+ #ifdef USER_MODE
  static int
  xer__print2fp(const void *buffer, size_t size, void *app_key) {
  	FILE *stream = (FILE *)app_key;
***************
*** 65,67 ****
--- 66,69 ----
  
  	return fflush(stream);
  }
+ #endif