them. I have tested this with a simple test program I downloaded
from the internet. We get the same result as on Linux, so I think
this is good. I will test it more with WebKit later.
Our Pthreads implementation is still missing some stuff, but this
adds a good chunk.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22274 a95241bf-73f2-0310-859d-f6bbb57e9c96
group ID with the session and let the terminal update them.
* Added an "orphaned" flag to the process_group structure and code to
maintain it.
* Handle the death of a controlling process correctly: The
foreground process group gets a SIGHUP and all newly-orphaned process
groups containing at least one stopped processes are sent
SIGHUP+SIGCONT.
* The tty handles the O_NOCTTY flag correctly, now.
* The tty handles reads/writes from processes from other sessions
correctly, now.
* Handle tcsetpgrp() from background processes correctly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22187 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also check for negative positions smaller -1
(as -1 means using current address).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22031 a95241bf-73f2-0310-859d-f6bbb57e9c96
* get_signal_stack() checked the wrong sig_action field (index is signal-1), also,
it had an off-by-one error in the stack range check.
* factored out a restart_syscall() function to avoid code duplication
* arch_setup_signal_frame() relied on the fact that vregs and the signal stack code
is a multiple of 4 bytes in size.
* Fixed sigaction(): it did return the error code directly instead of setting errno.
* signal() actually had a work-around for the broken sigaction()...
* Replaced the sig_func_t typedef with a sighandler_t typedef - this is non-standard
anyway, but now we're at least compatible with the GNU world instead of introducing
our own solution (BSD seems to use sig_t here, BTW).
* Removed now unused sigval structure from the header; it should be added again as
soon as we start supporting it.
* SA_RESETHAND and SA_ONESHOT are the same thing; the former did not work before.
* Made the non-standard SA_* flags refer to the standard ones instead of the other
way around.
* Added a test application for various signal features - works fine under Haiku,
tested also under Linux and BeOS (the latter fails as it does not support SA_RESTART).
More tests should be added, though.
* Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21999 a95241bf-73f2-0310-859d-f6bbb57e9c96
compliant:
* it now checks the alignment is a multiple of 4 (needs to be changed for 64 bit architectures)
* it no longer sets errno.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21975 a95241bf-73f2-0310-859d-f6bbb57e9c96
* use em_media_status to get link status
* added IFM_1000_SX (Fiber Optic) to net/if_media.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20551 a95241bf-73f2-0310-859d-f6bbb57e9c96
it might also be a good idea to change the constants to better match the usual
style.
* Added a BSD-style if_media.h.
* Added interface flags IFF_LINK, IFF_AUTO_CONFIGURED, and IFF_CONFIGURING. The
former will be set automatically by the stack, the rest will be set by the
net_server depending on the current state.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20535 a95241bf-73f2-0310-859d-f6bbb57e9c96
see the "ARP entry updated with different address" message.
* sockaddr_dl::sdl_data is now unsigned (uint8_t instead of char).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20399 a95241bf-73f2-0310-859d-f6bbb57e9c96
with gcc 4. Fixed resulting build errors (gcc is more lenient for
headers in -isystem directories).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20386 a95241bf-73f2-0310-859d-f6bbb57e9c96
there and in <wchar.h>. Any reason for not removing them in <wctype.h>? Or
maybe even nicer reverse the inclusion direction, i.e. remove the
duplicate protos in <wchar.h> and include <wctype.h> instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20317 a95241bf-73f2-0310-859d-f6bbb57e9c96
that can be set via setsockopt().
* For now, the struct tcphdr and its definitions are also part of the header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19383 a95241bf-73f2-0310-859d-f6bbb57e9c96
replacing files when merging when you don't have deleted them manually (for some reason,
it only works as part of the merge operation, and we didn't copy the whole tree to
have "a fresh start" - next time we know better, at least if SVN still suffers from
that same limitation).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18456 a95241bf-73f2-0310-859d-f6bbb57e9c96
change the size parameter type of several functions in sys/socket.h to match POSIX
compat libs and legacy headers keep the original R5 type (though I make a change for this)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17911 a95241bf-73f2-0310-859d-f6bbb57e9c96
src/bin/coreutils/src/cp.c, line 542 needs stat() exported), therefore, I disabled
it for now again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17902 a95241bf-73f2-0310-859d-f6bbb57e9c96
* pthread_key_create and pthread_key_delete now manages correctly a list of key/destructor
* pthread_create now uses a private thread function to add a "on_exit_thread" call for destructors
* pthread_join now returns B_OK in every case, and, as a joinable thread could already be gone, wait_for_thread would not find it
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17895 a95241bf-73f2-0310-859d-f6bbb57e9c96
syscall, but they could not know if R5 code called them (in which case the stat
size has a different size). We now always only return the R5 stat structure here.
This fixes bug #420. We might want to find a different solution to this problem,
though.
* Be got SYMLINK_MAX wrong - it's not the maximum number of links (that's SYMLOOP_MAX),
but the maximum size of a symlink buffer. Added missing SYMLOOP_MAX and SYMLINK_MAX
constants to limits.h.
* Fixes MAXSYMLINKS to use SYMLOOP_MAX, instead of SYMLINKS_MAX (which doesn't exist
in POSIX specs, but we (intentionally) break source compatibility here).
* Reenabled the Haiku versions of stat(), fstat(), and lstat() when build for Haiku.
* Removed OpenBeOS namespace stuff from the files I touched.
* Removed superfluous StorageDefs.Private.h, whyever that ended up in a public header
is beyond me.
* Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17894 a95241bf-73f2-0310-859d-f6bbb57e9c96
and used that one and NOFILE to implement R5 private calls _kset_[fd|mon]_limit_()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17545 a95241bf-73f2-0310-859d-f6bbb57e9c96
added some more posix definitions, though they might be never used in Haiku
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17184 a95241bf-73f2-0310-859d-f6bbb57e9c96
This has a negative effect on ualarm(), but is somewhat required by the POSIX
specs ("[...] the implementation should support one or more programming environments
in which [...], and useconds_t are no greater than the width of type long."
Indeed, it also changed the size of our struct timeval which broken binary
compatibility with R5 (ie. used in gettimeofday()).
This fixes bug #490 and therefore bug #428 (firefox crashing on load) as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17142 a95241bf-73f2-0310-859d-f6bbb57e9c96
Committed libnetwork.so. I actually wanted to port BSD's libc/net resolver, but that one uses too many unsupported functions, so I basically merged libbind.so and libsocket.so into one library.
Moved the libbind.so sources to libnetwork/dns.
Cleaned up native part of libbind.so a little bit more. Though, the ugly hack remains. We nbetter pthread/mutex support. Added TODO that we also shousctl() into the kernel and libroot.so.
Improved DEVNOTES a little bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15605 a95241bf-73f2-0310-859d-f6bbb57e9c96
Moved some headers around and cleaned them up.
Fixed threading code in libbind.so. Don't know why I hadn't noticed this before. Now it is reliable, but uses an even uglier hack.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15585 a95241bf-73f2-0310-859d-f6bbb57e9c96
but it compiles at least. :-)
* Pulled the architecture specific part out of <posix/setjmp.h> into
<posix/arch/<arch>/arch_setjmp.h>.
* Moved setjmp_save_sigs.c from the x86 specific implementation into a
"generic" sibling directory, since it is reusable (and actually used
by the PPC implementation).
* Added generic/longjmp_return.c containing a function __longjmp_return,
which is invoked at the end of siglongjmp(), resetting the signal mask
and validating the return value. It is used by the PPC implementation,
and should also be used by the x86 implementation, but I'll leave that
to someone who's motivated enough to also test it. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15479 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed implementation of ualarm() to support larger values.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14890 a95241bf-73f2-0310-859d-f6bbb57e9c96
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
That also includes some XSI signals, SIGPOLL and SIGVTALRM, dunno if we will every support
those in a useful way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14593 a95241bf-73f2-0310-859d-f6bbb57e9c96
moved static inline to extern inline to allow this change
please someone review this (ie are they platform dependent functions ?)
should fix bug #47
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14103 a95241bf-73f2-0310-859d-f6bbb57e9c96
- SupportDefs.h only includes stdbool.h if included from C
- stdbool.h for C++ now includes a macro for "bool" as defined by that header
- stdbool.h does nothing if __bool_true_false_are_defined is already defined
- stdbool.h no longer defines a _Bool enum, but defines _Bool as unsigned char, as
previously done by SupportDefs.h (the previous version changed the size).
- The gensyscalls Jamfile now preprocesses its headers in C++ mode so that "bool"
stays "bool", and doesn't become _Bool.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12042 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented them and moved them to unistd/terminal.c - not yet tested, though,
but should work. As a side effect, the TTY should now send signals.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12034 a95241bf-73f2-0310-859d-f6bbb57e9c96
SupportDefs.h now includes stdbool.h
This can break in some cases
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11985 a95241bf-73f2-0310-859d-f6bbb57e9c96
header, you should define COMPILE_FOR_R5 when you want to run the software
under R5 in order not to crash.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9511 a95241bf-73f2-0310-859d-f6bbb57e9c96
Explanation: we did not have the same sockaddr_in struct size as BONE, but our netstack wants to have our size, so I changed it to match BONE's. ;)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9079 a95241bf-73f2-0310-859d-f6bbb57e9c96
It's now much cleaner than before. Removed the tcgetattr() macro; it's now
a real function call again.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9049 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added preliminary O_TEMPORARY flag.
Made it a bit more POSIX compliant.
Cleaned up header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9026 a95241bf-73f2-0310-859d-f6bbb57e9c96
Separated macros from the typedefs, removed macros for unsigned minima as
these are not part of the standard.
Added intptr_t/uintptr_t types. Added some comments what those types stand for.
Added a note that this header is mostly compiler/arch specific and should
be handled (adapted) like this.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8919 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also no longer let getc()/putc() point to libio functions directly (they
were even only macros there, too...).
Should now be backwards compatible, too. Thanks to Waldemar for pointing this out!
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8894 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added an additional field st_type and changed functions to allow for this
extension while maintaining R5 compatibility.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7495 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also updated our socket.h to be more compatible with BONE (we do not support SO_NONBLOCK which is needed for Mozilla).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7201 a95241bf-73f2-0310-859d-f6bbb57e9c96
Still some sem_id depedency, thought. Will be split into private and posix files soon.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6038 a95241bf-73f2-0310-859d-f6bbb57e9c96
Non-clean hack: include os-specific OS.h to get sem_id and thread_id types defined.
Should clean up this whole file one day, thought.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5521 a95241bf-73f2-0310-859d-f6bbb57e9c96
Note, LOG_SERIAL does neither work in our implementation, nor in the original
implementation by Be.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5345 a95241bf-73f2-0310-859d-f6bbb57e9c96
don't define some (unneeded) macros, and LOG_TMID & LOG_THID are gone
(they were specified to be the same as LOG_PID).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5327 a95241bf-73f2-0310-859d-f6bbb57e9c96
the same name somewhere else( I think). At least it works now.:
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3564 a95241bf-73f2-0310-859d-f6bbb57e9c96
against reinclusion - possibly because GCC's stdarg.h act differently
when certain symbols are defined.
Anyway, that fixes the issue for now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3207 a95241bf-73f2-0310-859d-f6bbb57e9c96
stdio.h will follow later (the headers are currently unused).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2689 a95241bf-73f2-0310-859d-f6bbb57e9c96
Add again the load_driver_symbols() export into our KernelExport.h, as it's expected
by many kernel add-ons (drivers, modules)... the network ones, for a start.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2672 a95241bf-73f2-0310-859d-f6bbb57e9c96
is d_reclen which points out that this field is not the name length but
the one of the whole record (this is also handled incorrectly by the kernel
file systems right now).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2109 a95241bf-73f2-0310-859d-f6bbb57e9c96
- the inline functions I introduced earlier have been removed
- the notes about non-Posix extensions to the sigaction struct have been
updated, enlarged, and moved out of the way (near the bottom of the file)
- all the function prototypes have been collected and placed together
- a few more items have been commented
- in general, the organization of the whole file should be more tidy now (I hope)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2003 a95241bf-73f2-0310-859d-f6bbb57e9c96
a new typedef for signal handlers - sig_func_t
(the old one is kept around for backwards compatibility)
a new macro MAX_SIGNO to get rid of magic 32's all about
two more functions (sigemptyset and sigfillset) are now
defined inline as well
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1975 a95241bf-73f2-0310-859d-f6bbb57e9c96
There're now only defined here via extern, and declared in
/current/src/add-ons/kernel/network/core/route.c where they belong.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1807 a95241bf-73f2-0310-859d-f6bbb57e9c96
the VFS - BeOS don't have poll() at all, so we can freely choose them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1743 a95241bf-73f2-0310-859d-f6bbb57e9c96
also contains the pselect() prototype.
Added new header file sys/time.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1736 a95241bf-73f2-0310-859d-f6bbb57e9c96
Removed deprecated strtoq() functions (they are not even part of BeOS, so
why should we include this cruft?).
Added prototypes for llabs(), and lldiv() - added lldiv_t to div_t.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1661 a95241bf-73f2-0310-859d-f6bbb57e9c96
prototypes (and those commented out), to keep the whole project be compilable
and usable on BeOS.
Fixed a bug in fcntl.h (definition for O_DIRECT), added new O_MOUNT.
Added prototypes and "struct tm" to time.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1619 a95241bf-73f2-0310-859d-f6bbb57e9c96
Uncomment some functions in unistd.h which glob is using.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1419 a95241bf-73f2-0310-859d-f6bbb57e9c96
can use this structure to call fstat() on attributes and indices.
Added more functions to the file system interface (attributes, and indices).
Added header fs_attr.h, and fs_index.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1158 a95241bf-73f2-0310-859d-f6bbb57e9c96
Removed the bzero()/bcopy() prototypes, and replaced them with macros - we
should decide what to do with them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1119 a95241bf-73f2-0310-859d-f6bbb57e9c96
Changed other headers to include sys/types.h rather than ktypes.h.
Added a license reference at the beginning of those files.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@840 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added syscalls for, and implemented sys_create_link(), sys_remove_dir().
Implemented link(), unlink(), rmdir().
Fixed the inconsistent path buffer handling in the user|sys vfs functions; the
path buffer is now exactly SYS_MAX_PATH_LEN from userland (incl. terminating
null byte).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@748 a95241bf-73f2-0310-859d-f6bbb57e9c96
Replaced the unused syscall for getdtablesize() with one for access().
Implemented sys_access() and added it to the file system interface.
Removed the fs function interface from vfs.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@738 a95241bf-73f2-0310-859d-f6bbb57e9c96
getcwd().
Introduced new xyz(int fd, char *path, ...) style of functions for
sys_setcwd(), and sys_write_stat().
Added missing sys_fstat(). Removed duplicated prototypes in syscalls.h
Fixed some minor bugs.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@669 a95241bf-73f2-0310-859d-f6bbb57e9c96
All unimplemented functions are commented out for now - but that has to
change, of course.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@665 a95241bf-73f2-0310-859d-f6bbb57e9c96
some day).
Cleaned up sys/stat.h a bit, and added new definitions for different types
of symlinks I plan to add - though I am still not sure if it's a good idea ;-)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@580 a95241bf-73f2-0310-859d-f6bbb57e9c96
- added needed syscalls to access symlink support from userland
- implemented lstat(), symlink(), and readlink()
- added dev_t to ktypes.h (for now - should be in a public header anyway)
- added symlink support to the "ls" command (now calls lstat() and shows the
link target with the -l option)
- changed the sys_read_stat() call to support symlinks, and updated files
using that function (it gets an extra argument: bool traverseLink)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@560 a95241bf-73f2-0310-859d-f6bbb57e9c96
support it anyway, so remove this file as it's no longer needed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@123 a95241bf-73f2-0310-859d-f6bbb57e9c96
- remove private/kernel/Errors.h as this was just plain wrong to have it
there and confused issues somewhat.
- add the kerrors.h file that has kernel only error codes, namely the
ERR_ codes from newos.
- add comments for the other header files to tell people where to find
error code definitions in an attempt to stop people getting lost!
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@101 a95241bf-73f2-0310-859d-f6bbb57e9c96
Adjust Errors.h to use errno.h for the posix error codes
add first stab at limits.h, albeit not using the gcc headers at
present for intel.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@88 a95241bf-73f2-0310-859d-f6bbb57e9c96
Improved the comments and doxygen style to try and make the file
more readable.
The previous version can't be removed until we have the posix paths included
in the include paths. Once this is done the existsing version should be
removed as this is more up to date.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@67 a95241bf-73f2-0310-859d-f6bbb57e9c96
These were all private files and so shouldn't have been in a public header
location anyway.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@66 a95241bf-73f2-0310-859d-f6bbb57e9c96