- fix sched_setaffinity(2) page - add an EXAMPLE and new NOTES
This commit is contained in:
parent
7a34b70dd8
commit
afa5b3666b
64
man-pages-3.22-sched_setaffinity.patch
Normal file
64
man-pages-3.22-sched_setaffinity.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
diff -up man-pages-3.22/man2/sched_setaffinity.2.orig man-pages-3.22/man2/sched_setaffinity.2
|
||||||
|
--- man-pages-3.22/man2/sched_setaffinity.2.orig 2009-07-25 08:53:26.000000000 +0200
|
||||||
|
+++ man-pages-3.22/man2/sched_setaffinity.2 2009-12-02 15:29:17.000000000 +0100
|
||||||
|
@@ -212,6 +212,60 @@ system call returns the size (in bytes)
|
||||||
|
.I cpumask_t
|
||||||
|
data type that is used internally by the kernel to
|
||||||
|
represent the CPU set bit mask.
|
||||||
|
+
|
||||||
|
+The \fBcpu_set_t\fR affinity mask size provided by glibc only allows for upto
|
||||||
|
+1024 CPUs. It is possible to build Linux kernels with greater than 1024
|
||||||
|
+CPUs. Any application using the statically sized \fBcpu_set_t\fR will fail
|
||||||
|
+with \fBEINVAL\fR on such kernels. It is thus recommended that applications
|
||||||
|
+avoid using the statically sized \fBcpu_set_t\fR type, and instead dynamically
|
||||||
|
+allocate a mask using the CPU_*_S macros described in the \fBCPU_SET(3)\fR man
|
||||||
|
+page. Since it is not possible to determine ahead of time what \fBNR_CPUS\fR
|
||||||
|
+value the kernel was built with, applications must be prepared to catch
|
||||||
|
+\fBEINVAL\fR, and retry the command with a larger dynamically allocated mask.
|
||||||
|
+The example that follows illustrates portable usage.
|
||||||
|
+
|
||||||
|
+.SH EXAMPLE
|
||||||
|
+.nf
|
||||||
|
+ #define _GNU_SOURCE
|
||||||
|
+
|
||||||
|
+ #include <sched.h>
|
||||||
|
+ #include <stdio.h>
|
||||||
|
+ #include <errno.h>
|
||||||
|
+
|
||||||
|
+ int main(void)
|
||||||
|
+ {
|
||||||
|
+ cpu_set_t *mask;
|
||||||
|
+ size_t size;
|
||||||
|
+ int i;
|
||||||
|
+ int nrcpus = 1024;
|
||||||
|
+
|
||||||
|
+realloc:
|
||||||
|
+ mask = CPU_ALLOC(nrcpus);
|
||||||
|
+ size = CPU_ALLOC_SIZE(nrcpus);
|
||||||
|
+ CPU_ZERO_S(size, mask);
|
||||||
|
+ if ( sched_getaffinity(0, size, mask) == -1 ) {
|
||||||
|
+ CPU_FREE(mask);
|
||||||
|
+ if (errno == EINVAL &&
|
||||||
|
+ nrcpus < (1024 << 8)) {
|
||||||
|
+ nrcpus = nrcpus << 2;
|
||||||
|
+ goto realloc;
|
||||||
|
+ }
|
||||||
|
+ perror("sched_getaffinity");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for ( i = 0; i < nrcpus; i++ ) {
|
||||||
|
+ if ( CPU_ISSET_S(i, size, mask) ) {
|
||||||
|
+ printf("CPU %d is set\n", (i+1));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ CPU_FREE(mask);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+.fi
|
||||||
|
+
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
.BR clone (2),
|
||||||
|
.BR getcpu (2),
|
@ -4,7 +4,7 @@
|
|||||||
Summary: Man (manual) pages from the Linux Documentation Project
|
Summary: Man (manual) pages from the Linux Documentation Project
|
||||||
Name: man-pages
|
Name: man-pages
|
||||||
Version: 3.23
|
Version: 3.23
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
License: GPLv2+ and GPL+ and BSD and MIT and Copyright only and IEEE
|
License: GPLv2+ and GPL+ and BSD and MIT and Copyright only and IEEE
|
||||||
Group: Documentation
|
Group: Documentation
|
||||||
URL: http://www.kernel.org/pub/linux/docs/manpages/
|
URL: http://www.kernel.org/pub/linux/docs/manpages/
|
||||||
@ -33,6 +33,7 @@ Patch56: man-pages-3.22-strcpy.patch
|
|||||||
Patch57: man-pages-3.22-nsswitch.conf.patch
|
Patch57: man-pages-3.22-nsswitch.conf.patch
|
||||||
Patch58: man-pages-3.23-proc.patch
|
Patch58: man-pages-3.23-proc.patch
|
||||||
Patch59: man-pages-3.23-ld.so.patch
|
Patch59: man-pages-3.23-ld.so.patch
|
||||||
|
Patch60: man-pages-3.22-sched_setaffinity.patch
|
||||||
|
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
Autoreq: false
|
Autoreq: false
|
||||||
@ -64,6 +65,7 @@ rmdir man-pages-posix-%{posix_version}-%{posix_release}
|
|||||||
%patch57 -p1
|
%patch57 -p1
|
||||||
%patch58 -p1
|
%patch58 -p1
|
||||||
%patch59 -p1
|
%patch59 -p1
|
||||||
|
%patch60 -p1
|
||||||
|
|
||||||
### And now remove those we are not going to use:
|
### And now remove those we are not going to use:
|
||||||
|
|
||||||
@ -134,6 +136,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%lang(en) %{_mandir}/en/man*
|
%lang(en) %{_mandir}/en/man*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 2 2009 Ivana Hutarova Varekova <varekova@redhat.com> - 3.22-7
|
||||||
|
- fix sched_setaffinity(2) page - add an EXAMPLE and new NOTES
|
||||||
|
|
||||||
* Wed Nov 18 2009 Ivana Varekova <varekova@redhat.com> - 3.23-2
|
* Wed Nov 18 2009 Ivana Varekova <varekova@redhat.com> - 3.23-2
|
||||||
- fix ld.so man-page (#532629)
|
- fix ld.so man-page (#532629)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user