rpms/man-pages/F-12 man-pages-3.22-sched_setaffinity.patch, NONE, 1.1 man-pages.spec, 1.122, 1.123
Ivana Varekova
varekova at fedoraproject.org
Wed Dec 2 14:34:57 UTC 2009
Author: varekova
Update of /cvs/pkgs/rpms/man-pages/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19768
Modified Files:
man-pages.spec
Added Files:
man-pages-3.22-sched_setaffinity.patch
Log Message:
- fix sched_setaffinity(2) page - add an EXAMPLE and new NOTES
man-pages-3.22-sched_setaffinity.patch:
sched_setaffinity.2 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
--- NEW FILE man-pages-3.22-sched_setaffinity.patch ---
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),
Index: man-pages.spec
===================================================================
RCS file: /cvs/pkgs/rpms/man-pages/F-12/man-pages.spec,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -p -r1.122 -r1.123
--- man-pages.spec 16 Sep 2009 08:47:42 -0000 1.122
+++ man-pages.spec 2 Dec 2009 14:34:57 -0000 1.123
@@ -4,7 +4,7 @@
Summary: Man (manual) pages from the Linux Documentation Project
Name: man-pages
Version: 3.22
-Release: 6%{?dist}
+Release: 7%{?dist}
License: GPLv2+ and GPL+ and BSD and MIT and Copyright only and IEEE
Group: Documentation
URL: http://www.kernel.org/pub/linux/docs/manpages/
@@ -31,6 +31,7 @@ Patch54: man-pages-2.80-malloc_h.patch
Patch55: man-pages-3.22-gai.conf.patch
Patch56: man-pages-3.22-strcpy.patch
Patch57: man-pages-3.22-nsswitch.conf.patch
+Patch58: man-pages-3.22-sched_setaffinity.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Autoreq: false
@@ -60,6 +61,7 @@ rmdir man-pages-posix-%{posix_version}-%
%patch55 -p1
%patch56 -p1
%patch57 -p1
+%patch58 -p1
### And now remove those we are not going to use:
@@ -130,6 +132,9 @@ rm -rf $RPM_BUILD_ROOT
%lang(en) %{_mandir}/en/man*
%changelog
+* Wed Dec 2 2009 Ivana Varekova <varekova at redhat.com> - 3.22-7
+- fix sched_setaffinity(2) page - add an EXAMPLE and new NOTES
+
* Wed Sep 16 2009 Ivana Varekova <varekova at redhat.com> - 3.22-6
- fix nsswitch.conf(5) man page
More information about the fedora-extras-commits
mailing list