123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- {
- $Id$
- This file is part of the Free Pascal run time library.
- Copyright (c) 2003 Marco van de Voort
- member of the Free Pascal development team.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY;without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- function fpNice(N:cint):cint;
- {
- Set process priority. A positive N means a lower priority.
- A negative N decreases priority.
- Doesn't exist in BSD. Linux emu uses setpriority in a construct as below:
- }
- var prio : cint;
- begin
- fpseterrno(0);
- prio:=fpgetpriority(PRIO_PROCESS,0);
- if (prio=-1) and (fpgeterrno<>0) then
- exit(-1);
- fpNice:=fpSetPriority(Prio_Process,0,prio+N);
- end;
- Function fpGetPriority(Which,Who:cint):cint;
- {
- Get Priority of process, process group, or user.
- Which : selects what kind of priority is used.
- can be one of the following predefined Constants :
- Prio_User.
- Prio_PGrp.
- Prio_Process.
- Who : depending on which, this is , respectively :
- Uid
- Pid
- Process Group id
- Errors are reported in linuxerror _only_. (priority can be negative)
- }
- begin
- if (which<prio_process) or (which>prio_user) then
- begin
- { We can save an interrupt here }
- fpgetpriority:=0;
- fpseterrno(ESysEinval);
- end
- else
- begin
- fpGetPriority:=do_syscall(syscall_nr_GetPriority,which,who);
- end;
- end;
- Function fpSetPriority(Which,Who,What:cint):cint;
- {
- Set Priority of process, process group, or user.
- Which : selects what kind of priority is used.
- can be one of the following predefined Constants :
- Prio_User.
- Prio_PGrp.
- Prio_Process.
- Who : depending on value of which, this is, respectively :
- Uid
- Pid
- Process Group id
- what : A number between -20 and 20. -20 is most favorable, 20 least.
- 0 is the default.
- }
- begin
- if ((which<prio_process) or (which>prio_user)) or ((what<-20) or (what>20)) then
- fpseterrno(ESyseinval) { We can save an interrupt here }
- else
- begin
- fpSetPriority:=do_syscall(Syscall_nr_Setpriority,which,who,what);
- end;
- end;
- Function fpLstat(path:pchar;Info:pstat):cint;
- {
- Get all information on a link (the link itself), and return it in info.
- }
- begin
- fpLStat:=do_syscall(syscall_nr_lstat,TSysParam(path),TSysParam(info));
- end;
- Function fpLstat(Filename: ansistring;Info:pstat):cint;
- {
- Get all information on a link (the link itself), and return it in info.
- }
- begin
- fpLStat:=do_syscall(syscall_nr_lstat,TSysParam(pchar(filename)),TSysParam(info));
- end;
- Function fpSymlink(oldname,newname:pchar):cint;
- {
- We need this for erase
- }
- begin
- fpsymlink:=do_syscall(syscall_nr_symlink,TSysParam(oldname),TSysParam(newname));
- end;
- Function fpReadLink(name,linkname:pchar;maxlen:cint):cint;
- begin
- fpreadlink:=do_syscall(syscall_nr_readlink, TSysParam(name),TSysParam(linkname),maxlen);
- end;
- {
- $Log$
- Revision 1.7 2004-11-03 15:00:43 marco
- * Pathstr eliminated
- Revision 1.6 2004/07/03 22:48:49 marco
- * small fix for 1.0.x cycling
- Revision 1.5 2004/04/22 16:22:10 marco
- * fpnice fixes
- Revision 1.4 2004/01/01 17:07:21 marco
- * few small freebsd fixes backported from debugging linux
- }
|