libk  Diff

Differences From Artifact [e1362458a3]:

To Artifact [4eaecd6098]:


   182    182   	# we wish to import; we use sed to transform this into a form
   183    183   	# that cpp will fill out for us, producing a table that the
   184    184   	# awk scripts can handle and turn into a list of constants.
   185    185   	echo '#include <sys/syscall.h>' > $gen/system_calls.t.1 # this is the magic part
   186    186   	cat arch/posix/syscalls > $gen/system_calls.t.2
   187    187   	sed -e 's;^\(.*\)$;\1 SYS_\1;' -i $gen/system_calls.t.2
   188    188   	cat $gen/system_calls.t.1 $gen/system_calls.t.2 | cpp -P >$gen/system_calls.tbl
          189  +
          190  +	# generate errno tables the same way
          191  +	echo '#include <errno.h>' > $gen/error_codes.t.1 # this is the magic part
          192  +	cat arch/posix/errnos > $gen/error_codes.t.2
          193  +	sed -e 's;^\(.*\)$;k_platform_error_\1 \1;' -i $gen/error_codes.t.2
          194  +	cat $gen/error_codes.t.1 $gen/error_codes.t.2 | cpp -P | grep "^k_platform_error" >$gen/error_codes.tbl # haaaack
   189    195   else
   190    196   	case $os in
   191         -		# lin) grep -h "#define __NR_" $p_headers_syscall | sed 's;^#define __NR_;;' > $gen/system_calls.tbl;;
   192         -		# fbsd) grep -h "#define	SYS_" $p_headers_syscall | sed 's;^#define	SYS_;;' | sed 's;[\t ]\+; ;' > $gen/system_calls.tbl;;
   193    197   		*) noimpl 'system call table generation';;
   194    198   	esac
   195    199   fi
   196         -# cat $p_headers_syscall $gen/system_calls.tbl | cpp -P |
          200  +
          201  +# take the OS-specific system call tables that have been prepared
          202  +# for us above and feed them into awk scripts to generate C headers
   197    203   awk -f arch/syscall.awk -v out=s <$gen/system_calls.tbl>$gen/system_calls.s
   198         -# cat $p_headers_syscall $gen/system_calls.tbl | cpp -P |
   199    204   awk -f arch/syscall.awk -v out=h <$gen/system_calls.tbl>$gen/system_calls.h
   200    205   
   201         -# generate errno tables
   202         -grep -h "#[ 	]*define[ 	]\+E" $p_headers_errno |
   203         -	sed 's;^#[\t ]*define[\t ]\+\(E[A-Z0-9]\+\).*$;k_platform_error_\1 \1;' >\
   204         -	$gen/error_names.tbl
   205         -cat $p_headers_errno $gen/error_names.tbl | cpp -P >$gen/error_numbers.tbl
   206         -awk -f arch/errtbl.awk <$gen/error_numbers.tbl >$gen/error_table.h
          206  +# do the same with our error codes table
          207  +awk -f arch/errtbl.awk <$gen/error_codes.tbl >$gen/error_table.h
   207    208   
   208    209   # generate symbol tables for error handling functions
   209    210   mkdir -p "$to/k"
   210    211   awk -f global/gen-conds.awk <global/modules >$to/k/internal.egroup.h
   211    212   awk -f global/gen-ident.awk <global/modules >$gen/internal.ident.c
   212    213   comp_co $gen/internal.ident.c $to/internal.ident.o
   213    214