diff --git a/sys/kern/makesyscalls.sh b/sys/kern/makesyscalls.sh index 5781d314c4c..7e1d63b5cca 100644 --- a/sys/kern/makesyscalls.sh +++ b/sys/kern/makesyscalls.sh @@ -42,6 +42,7 @@ cat_sysproto="" for stdc in ${stdcompat}; do lowprefix=$(echo $stdc | tr '[[:upper:]]' '[[:lower:]]') compatflag=$(echo $stdc | sed 's/FREEBSD/COMPAT/') + compatnum=$(echo $stdc | sed 's/FREEBSD//') lowcompat=$(echo $compatflag | tr '[[:upper:]]' '[[:lower:]]') sysent="sysent.$stdc.$$" sysentdcl="sysent.${stdc}cl.$$" @@ -68,7 +69,10 @@ for stdc in ${stdcompat}; do conditional_compatcheck="$conditional_compatcheck type(\"$compatflag\")" section_compatflagged="$section_compatflagged else if (flag(\"$compatflag\")) { - n$lowcompat++ + if (mincompat > $compatnum) + is_obsol = 1 + else + n$lowcompat++ out = \"$sysent\" outdcl = \"$sysentdcl\" wrap = \"$lowcompat\" @@ -90,6 +94,7 @@ for stdc in ${stdcompat}; do " done +mincompat="0" sysent="sysent.switch.$$" sysinc="sysinc.switch.$$" sysarg="sysarg.switch.$$" @@ -174,6 +179,7 @@ sed -e ' switchname = \"$switchname\" namesname = \"$namesname\" infile = \"$1\" + mincompat = \"$mincompat\" + 0 abi_func_prefix = \"$abi_func_prefix\" capenabled_string = \"$capenabled\" "' @@ -589,9 +595,13 @@ sed -e ' syscall++ next } + is_obsol = 0 type("COMPAT") || '" $conditional_compatcheck "' { if (flag("COMPAT")) { - ncompat++ + if (mincompat >= 4) + is_obsol = 1 + else + ncompat++ out = syscompat outdcl = syscompatdcl wrap = "compat" @@ -599,6 +609,18 @@ sed -e ' descr = "old" } '" $section_compatflagged "' parseline() + if (is_obsol) { + printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },") > sysent + align_sysent_comment(34) + printf("/* %d = obsolete %s%s */\n", syscall, + prefix, funcalias) > sysent + printf("\t\"obs_%s%s\",\t\t\t/* %d = obsolete %s%s */\n", + prefix, funcalias, syscall, prefix, funcalias) > sysnames + printf("\t\t\t\t/* %d is obsolete %s%s */\n", + syscall, prefix, funcalias) > syshdr + syscall++ + next + } if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \ !flag("NODEF")) { printf("struct %s {\n", argalias) > out