Anonymous | Login | 2024-12-12 01:52 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Type | Date Submitted | Last Update | ||
0000617 | [1003.1(2008)/Issue 7] System Interfaces | Objection | Enhancement Request | 2012-09-27 01:11 | 2024-06-11 08:52 | ||
Reporter | eblake | View Status | public | ||||
Assigned To | ajosey | ||||||
Priority | normal | Resolution | Accepted | ||||
Status | Closed | ||||||
Name | Eric Blake | ||||||
Organization | Red Hat | ||||||
User Reference | ebb.ffsl | ||||||
Section | ffs | ||||||
Page Number | 847 | ||||||
Line Number | 28126 | ||||||
Interp Status | --- | ||||||
Final Accepted Text | |||||||
Summary | 0000617: add ffsl() and ffsll() | ||||||
Description |
Many hardware implementations have primitives for finding the first set bit on integers larger than 'int', and it would be handy to expose this to users in Issue 8. At least glibc has already implemented ffsl() and ffsll(), and it is relatively easy to find applications using these extensions. Note that several compilers have implementation extension primitives that can easily be used to compute the longer variants of ffs; for example, with gcc, an implementation would use the builtin for counting trailing zeros, as in: int ffsl(long i) { return i ? __builtin_ctzl(i) + 1 : 0; } Note that current glibc chooses to expose ffsl() via <string.h> when extensions are requested, due to historical accident; but this proposal will mandate <strings.h> for symmetry with ffs(). This should not be a hardship for glibc, which already has experience with conditionally exposing symbols based on which version of the standard is requested. However, while I did not list it as part of my desired action, perhaps we should consider additional changes to allow <string.h> to expose symbols from <strings.h>, and/or allow <strings.h> to expose symbols from <string.h>. (For that matter, in glibc, strcasecmp and friends are also exposed through <string.h> when extensions are in use, so for Issue 8, perhaps it is time to consider ditching <strings.h> altogether and mandating that <string.h> provide all of the ffs and strcasecmp functions.) Other common bit-twiddling primitives that might be worth exposing include population count (returning the number of bits set to 1 within the argument), as well as finding the position of the most significant bit (sometimes called clz). However, while gcc has primitives for these operations in the implementation namespace, glibc does not expose them via handy wrappers in the user namespace, so I have not tried to add them here. |
||||||
Desired Action |
After line 12167 [XBD <strings.h>], add two lines with XSI shading: int ffsl(long); int ffsll(long long); At line 28126 [XSH ffs NAME], change "ffs" to "ffs, ffsl, ffsll" After line 28129, add two lines with XSI shading: int ffsl(long i); int ffsll(long long i); At line 28131, change "ffs( ) function" to "ffs( ), ffsl( ), and ffsll( ) functions" At line 28134, change: The ffs( ) function shall return the index of the first bit set. If i is 0, then ffs( ) shall return 0. to: The ffs( ), ffsl( ), and ffsll( ) functions shall return the index of the first bit set. If i is 0, then these functions shall return 0. At line 126458 [XRAT E.1 XSI_C_LANG_SUPPORT], add ffsl() and ffsll() in the list after ffs(). |
||||||
Tags | issue8 | ||||||
Attached Files | |||||||
|
There are no notes attached to this issue. |
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |