/* Who uses what:
*
- * tty_to_dev oldps, w (there is a fancy version in ps)
- * dev_to_tty oldps, top, ps
+ * tty_to_dev w (there is a fancy version in ps)
+ * dev_to_tty top, ps
*/
typedef struct tty_map_node {
#endif
#endif
+// marks old junk, to warn non-procps library users
+#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
+#define OBSOLETE __attribute__((deprecated))
+#else
+#define OBSOLETE
+#endif
+
+// available when?
+// Tells gcc that function is library-internal;
+// so no need to do dynamic linking at run-time.
+#if __GNUC__ > 2 // FIXME: total random guess that's sure to be wrong
+#define VISIBILITY_HIDDEN visibility("hidden")
+#else
+#define VISIBILITY_HIDDEN
+#endif
+// mark function for internal use
+#define HIDDEN __attribute__((VISIBILITY_HIDDEN))
+// given foo, create a foo_direct for internal use
+#define HIDDEN_ALIAS(x) extern __typeof(x) x##_direct __attribute__((alias(#x),VISIBILITY_HIDDEN))
+
// since gcc-2.5
#define NORETURN __attribute__((__noreturn__))
+#define FUNCTION __attribute__((__const__)) // no access to global mem, even via ptr, and no side effect
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
// won't alias anything, and aligned enough for anything
#define MALLOC __attribute__ ((__malloc__))
+// no side effect, may read globals
+#define PURE __attribute__ ((__pure__))
// tell gcc what to expect: if(unlikely(err)) die(err);
#define likely(x) __builtin_expect(!!(x),1)
#define unlikely(x) __builtin_expect(!!(x),0)
#define expected(x,y) __builtin_expect((x),(y))
#else
#define MALLOC
+#define PURE
#define likely(x) (x)
#define unlikely(x) (x)
#define expected(x,y) (x)
status2proc(sbuf, p);
}
+HIDDEN_ALIAS(readproc);
/* Convenient wrapper around openproc and readproc to slurp in the whole process
* table subset satisfying the constraints of flags and the optional PID list.
va_end(ap);
do { /* read table: */
tab = xrealloc(tab, (n+1)*sizeof(proc_t*));/* realloc as we go, using */
- tab[n] = readproc(PT, NULL); /* final null to terminate */
+ tab[n] = readproc_direct(PT, NULL); /* final null to terminate */
} while (tab[n++]); /* stop when NULL reached */
closeproc(PT);
return tab;