new gcc+ld+gas features
This commit is contained in:
parent
c334155f56
commit
256e1f767c
@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
/* Who uses what:
|
/* Who uses what:
|
||||||
*
|
*
|
||||||
* tty_to_dev oldps, w (there is a fancy version in ps)
|
* tty_to_dev w (there is a fancy version in ps)
|
||||||
* dev_to_tty oldps, top, ps
|
* dev_to_tty top, ps
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct tty_map_node {
|
typedef struct tty_map_node {
|
||||||
|
4
proc/library.map
Normal file
4
proc/library.map
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
_3_1_5 {
|
||||||
|
global: readproc;
|
||||||
|
local: *;
|
||||||
|
};
|
@ -18,18 +18,42 @@
|
|||||||
#endif
|
#endif
|
||||||
#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
|
// since gcc-2.5
|
||||||
#define NORETURN __attribute__((__noreturn__))
|
#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
|
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
|
||||||
// won't alias anything, and aligned enough for anything
|
// won't alias anything, and aligned enough for anything
|
||||||
#define MALLOC __attribute__ ((__malloc__))
|
#define MALLOC __attribute__ ((__malloc__))
|
||||||
|
// no side effect, may read globals
|
||||||
|
#define PURE __attribute__ ((__pure__))
|
||||||
// tell gcc what to expect: if(unlikely(err)) die(err);
|
// tell gcc what to expect: if(unlikely(err)) die(err);
|
||||||
#define likely(x) __builtin_expect(!!(x),1)
|
#define likely(x) __builtin_expect(!!(x),1)
|
||||||
#define unlikely(x) __builtin_expect(!!(x),0)
|
#define unlikely(x) __builtin_expect(!!(x),0)
|
||||||
#define expected(x,y) __builtin_expect((x),(y))
|
#define expected(x,y) __builtin_expect((x),(y))
|
||||||
#else
|
#else
|
||||||
#define MALLOC
|
#define MALLOC
|
||||||
|
#define PURE
|
||||||
#define likely(x) (x)
|
#define likely(x) (x)
|
||||||
#define unlikely(x) (x)
|
#define unlikely(x) (x)
|
||||||
#define expected(x,y) (x)
|
#define expected(x,y) (x)
|
||||||
|
@ -576,6 +576,7 @@ void look_up_our_self(proc_t *p) {
|
|||||||
status2proc(sbuf, p);
|
status2proc(sbuf, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HIDDEN_ALIAS(readproc);
|
||||||
|
|
||||||
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
||||||
* table subset satisfying the constraints of flags and the optional PID list.
|
* table subset satisfying the constraints of flags and the optional PID list.
|
||||||
@ -607,7 +608,7 @@ proc_t** readproctab(int flags, ...) {
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
do { /* read table: */
|
do { /* read table: */
|
||||||
tab = xrealloc(tab, (n+1)*sizeof(proc_t*));/* realloc as we go, using */
|
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 */
|
} while (tab[n++]); /* stop when NULL reached */
|
||||||
closeproc(PT);
|
closeproc(PT);
|
||||||
return tab;
|
return tab;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user