2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-09 13:49:05 +00:00

Makefile: Blacklist functions that threaded programs cannot use safely.

Some functions that POSIX says cannot be used safely in multithreaded
programs are not on the initial blacklist:

    - getenv() should be safe in real implementations in the absence of
      changes to the environment.  (putenv() and setenv() are blacklisted.)

    - We only use getopt() before spawning extra threads, and I expect this
      to continue to be true.

Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2013-04-05 08:58:57 -05:00
parent b028db44ca
commit 6a3e30f3e7
2 changed files with 104 additions and 0 deletions

View File

@@ -210,6 +210,20 @@ check-assert-h-usage:
fi
.PHONY: check-assert-h-usage
ALL_LOCAL += thread-safety-check
thread-safety-check:
@if test -e '$(srcdir)'/.git && (git --version) >/dev/null 2>&1 && \
grep -n -f '$(srcdir)'/build-aux/thread-safety-blacklist \
`git ls-files '$(srcdir)' | grep '\.[ch]$$' \
| $(EGREP) -v '^datapath|^lib/sflow|^third-party'` \
| $(EGREP) -v ':[ ]*/?\*'; \
then \
echo "See above for list of calls to functions that are"; \
echo "blacklisted due to thread safety issues"; \
exit 1; \
fi
EXTRA_DIST += build-aux/thread-safety-blacklist
if HAVE_GROFF
ALL_LOCAL += manpage-check
manpage-check: $(man_MANS) $(dist_man_MANS) $(noinst_man_MANS)

View File

@@ -0,0 +1,90 @@
\basctime(
\bbasename(
\bcatgets(
\bcrypt(
\bctermid(
\bctime(
\bdbm_clearerr(
\bdbm_close(
\bdbm_delete(
\bdbm_error(
\bdbm_fetch(
\bdbm_firstkey(
\bdbm_nextkey(
\bdbm_open(
\bdbm_store(
\bdirname(
\bdlerror(
\bdrand48(
\becvt(
\bencrypt(
\bendgrent(
\bendpwent(
\bendutxent(
\bfcvt(
\bftw(
\bgcvt(
\bgetc_unlocked(
\bgetchar_unlocked(
\bgetdate(
\bgetgrent(
\bgetgrgid(
\bgetgrnam(
\bgethostbyaddr(
\bgethostbyname(
\bgethostent(
\bgetlogin(
\bgetmntent(
\bgetnetbyaddr(
\bgetnetbyname(
\bgetnetent(
\bgetprotobyname(
\bgetprotobynumber(
\bgetprotoent(
\bgetpwent(
\bgetpwnam(
\bgetpwuid(
\bgetservbyname(
\bgetservbyport(
\bgetservent(
\bgetutxent(
\bgetutxid(
\bgetutxline(
\bgmtime(
\bhcreate(
\bhdestroy(
\bhsearch(
\binet_ntoa(
\bl64a(
\blgamma(
\blgammaf(
\blgammal(
\blocaleconv(
\blocaltime(
\blrand48(
\bmrand48(
\bnftw(
\bnl_langinfo(
\bptsname(
\bputc_unlocked(
\bputchar_unlocked(
\bputenv(
\bpututxline(
\brand(
\bsetenv(
\bsetgrent(
\bsetkey(
\bsetpwent(
\bsetutxent(
\bsigprocmask(
\bstrerror(
\bstrsignal(
\bstrtok(
\bsystem(
\btmpnam(
\bttyname(
\bunsetenv(
\bwcrtomb(
\bwcsrtombs(
\bwcstombs(
\bwctomb(