@@ -131,6 +131,25 @@ END {
exit 1
}
+ # TYPES is an associative array where the index is the data
+ # TYPESA is an indexed array where the value is the data
+ # We sort TYPESA
+ typecount = 0
+ for (tnm in types) {
+ typesa[typecount] = tnm;
+ typecount ++
+ }
+ # bubble sort is good enough, and more portable than GAWK's sorti()
+ for (i = 0; i < typecount - 1; i ++) {
+ for (j = i + 1; j < typecount; j ++) {
+ if (typesa[i] > typesa[j]) {
+ temp = typesa[i];
+ typesa[i] = typesa[j];
+ typesa[j] = temp;
+ }
+ }
+ }
+
print "/* AUTOGENERATED by gen-tunables.awk. */"
print "#ifndef _TUNABLES_H_"
print "# error \"Do not include this file directly.\""
@@ -141,7 +160,8 @@ END {
# Now, the enum names
print "\ntypedef enum"
print "{"
- for (tnm in types) {
+ for (i = 0; i < typecount; i++) {
+ tnm = typesa[i];
split (tnm, indices, SUBSEP);
t = indices[1];
n = indices[2];
@@ -157,7 +177,8 @@ END {
print "# include \"dl-tunable-types.h\""
# Finally, the tunable list.
print "static tunable_t tunable_list[] attribute_relro __attribute_used__ = {"
- for (tnm in types) {
+ for (i = 0; i < typecount; i++) {
+ tnm = typesa[i];
split (tnm, indices, SUBSEP);
t = indices[1];
n = indices[2];
@@ -172,7 +193,8 @@ END {
# Map of tunable with environment variables aliases used during parsing. */
print "\nstatic const tunable_id_t tunable_env_alias_list[] ="
printf "{\n"
- for (tnm in types) {
+ for (i = 0; i < typecount; i++) {
+ tnm = typesa[i];
split (tnm, indices, SUBSEP);
t = indices[1];
n = indices[2];